1.寄存器分类:
2.一共37个寄存器,31个通用寄存器,6个状态寄存器
其中usr和sys的寄存器很类似
3.通用寄存器:
(1)不分组寄存器0--7
(2)分组寄存器:8--14
(3)PC指针:r15
4状态寄存器:只有在异常模式下,才会既有cpsr又有spsr,usr和sys模式下只有cpsr,为的是保护现场
(1)N:表示符号,1表示负数,0表示正数。如两个数进行比较和减法操作
(2)Z:当两个数相等,为1,否则为0,也是比较和加法操作居多
(3)I:当他为1的时候,处理器不能产生中断,即中断屏蔽
(4)F:快速中断屏蔽,为1生效
(5)M【4:0】:表明不同的工作模式,可读可写,及变换工作模式,一般用读,修改,写的方式来切换工作模式。
5.特殊寄存器
(1)r13:sp指针,堆栈寄存器
(2)r14:LR链接寄存器。有两个特殊功能,每一种模式下都可以用于保存函数的返回地址,另外就是异常处理后的返回地址,如中断。
(3)r15:PC指针,程序计数器
6.寻址方式:处理器根据指令提供的信息找到所需要的操作数的过程,针对源操作数
7.立即寻址:操作数直接给出,以#作为前缀
add r0,r0,#0x3f
8.寄存器寻址:操作数存放在寄存器中,以寄存器直接出现在指令中
add r0,r1,r2
9.寄存器间接寻址:操作数在内存中,其对应的地址存放在寄存器中,以【寄存器】的形式出现在指令中
ldr r0,[r2]
10.基址变址寻址:操作数在内存中,其对应的地址由基址寄存器里的值作为基地址,然后加上偏移量,从而得到操作数在内存中实际的物理地址,以【基址寄存器,偏移量】形式出现在指令中
ldr r0,[r1,#4]
11.相对寻址:和基址变址相似,只不过以当前PC指针的值作为基地址,然后加上标号偏移量,从而得到实际的操作数地址,常用于程序的跳转和返回。
bl next(相对寻址)
... ...
next
... ...
mov pc,lr