21.ARM-V7架构

运行模式

-User(USR):用户模式

Linux系统用户进程,资源访问受限

-System(SYS):系统模式

Linux内核,共用寄存器,资源自由访问

-IRQ:一般中断模式

硬件产生中断信号

-FIQ:快速中断模式

时间紧急的中断,高速信号的传输、采集

-Supervisor(SVC):管理模式

默认模式:系统初始化、软中断

-Abort(ABT):数据访问终止模式

非法访问地址或寄存器、段错误

-Undef(UND):未定义指令模式

程序跑飞、篡改

-Monitor:用于用户安全扩展模式

-Hyp:用于虚拟化扩展

寄存器组

通用寄存器

r0~r3:用来传递函数参数、暂存数据

r4~r11:用来保存被调用函数的局部变量,暂存数据

r12:记录函数调用过程中上一次sp指针的值

r13(sp):函数堆栈寄存器

r14(lr):记录函数返回地址

r15(pc):程序计数器

程序状态寄存器

cpsr:该寄存器包含运算标志位,中断禁止位、当前运行模式标志等一些状态位以及一些控制位

spsr:发生异常切换模式时,将cpsr复制到发生异常的模式下的spsr

系统寄存器

cp15协处理器、内存、缓存、中断

AMR常用汇编指令

汇编格式:

label:instruction  @  comment

-label:标记

-instruction:具体汇编指令

-comment:注释内容


常用段名:

-text:代码段

-.data:初始化的数据段

-.bss:未初始化的数据段

-.rodata:只读数据段

-.section:自定义段

.section .vector

常见伪操作:

-.global:定义全局标号

.global _start

-.align:字节对齐

.align 2

寄存器间数据传输:

mov:寄存器数据(或者是立即数)拷贝到另一个寄存器

mov r0,r1

mov r0,#0x12

mrs:读程序状态寄存器

mrs cpsr,r0

mrc:读cp15协处理器

mrc:写cp15寄存器

内存与寄存器数据传输:

-ldr:把内存数据(或者是立即数)加载到寄存器

ldr r0,=0x80000000

ldr r1,[r0]

-str:把寄存器数据写入到内存

ldr r0,=0x80000000

str r1,[r0]

压栈和出栈

push:把寄存器列表存入栈中

push (r0~r3,r12);

pop:从栈中恢复寄存器列表

pop {r0~r3,r12}

跳转

-b:跳转到目标地址

b main

-bl:跳转到目标地址,并把当前pc指针值保存在lr寄存器中

b1 main

算数运算指令:

-add:加法运算

add r1,r2,r3

add r1,r2

-sub:减法运算

sub r1,r2,r3

-mul:乘法运算

mul r1,r2,r3

-udiv:除法运算

udiv r1,r2,r3

逻辑运算

-and:与

and r1,r2,r3

and r1,r2

-orr:或

orr r1,r2,r3

-bic:位清除

bic r1,r2,r3

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值