PC 是指令指针 R15
LR是用于保存函数调用的返回地址 R14
SP是堆栈指针 R13
LDR 将内存中的数载入到寄存器
STR 将寄存器中的数保存到内存
无条件跳转:L
函数调用: BL (保存PC到LR再跳转)
前四个参数保存到R0~R3,其他使用栈传递
返回值:
1.结果为一个32位的整数时,可以通过寄存器R0返回.
2.结果为一个64位整数时,可以通过R0和R1返回,依此类推.
3.结果为一个浮点数时,可以通过浮点运算部件的寄存器f0,d0或者s0来返回.
4.结果为一个复合的浮点数时,可以通过寄存器f0-fN或者d0~dN来返回.
5.对于位数更多的结果,需要通过调用内存来传递.
BX
BXL
X代表切换指令集
立即数前面加#
push pop
ARM 流水线介绍
ARM7
取指令,译码,执行
1、位指令
AND指令进行逻辑"与"操作;
ORR指令进行逻辑"或"操作;
EOR指令进行逻辑"异或"操作;==》F = ^AB + A^B
ORN指令进行逻辑"或非"操作;==》F = ^(A+B)
BIC指令进行"RN AND NOT RM"操作
2、批量存储读取指令
LDM:(load much)多数据加载,将地址上的值加载到寄存器上
STM:(store much)多数据存储,将寄存器的值存到地址上
主要用途:现场保护、数据复制、参数传送等,共有8种模式(前面4种用于数据块的传输,后面4种是堆栈操作)如下:
IA:每次传送后地址加4,其中的寄存器从左到右执行,例如:STMIA R0,{R1,LR} 先存R1,再存LR
IB:每次传送前地址加4,同上
DA:每次传送后地址减4,其中的寄存器从右到左执行,例如:STMDA R0,{R1,LR} 先存LR,再存R1
DB:每次传送前地址减4,同上
FD:满递减堆栈 (每次传送前地址减4)
FA:满递增堆栈 (每次传送后地址减4)
ED:空递减堆栈 (每次传送前地址加4)
EA:空递增堆栈 (每次传送后地址加4)
注意:其中在数据块的传输中是STMMDB和LDMIA对应,STMMIA和LDMDB对应,而在堆栈操作是STMFD和LDMFD对应,STMFA和LDMFA对应
网友评论