ADD
add r0,r1,#4 //r0 = r1 + 4
SUB
sub r0,r1,#4 //r0 = r1 - 4
sub r0,r1,r2 //r0 = r1 - r2
LDR
LDR 寄存器 ⬅内存
LDR R0,=0x50000050 // r0 = 0x50000050
LDR R1,=0xE0000000 ;R1=0xE0000000
LDR R1,0xE0000000 ;将内存中地址为0xE0000000的内容载入到R1
LDR R1,[R0] ;将R0中的数所指定的地址的内容传输到R1
STR
STR 寄存器 ➡内存
STR R1,[R0] ;将R1中的内容传输到R0中的数所指定的地址的内存中去
LDM
读内存,写入多个寄存器
STM
把多个寄存器写入内存
LDIA
看上图理解
ldmia sp,{fp,ip,pc}
/*
假设sp=4080
1.先读fp = 4080~4083的值
2.sp = 4080 + 4 = 4084
3.先读ip = 4084~4087的值
4.ip = 4084 + 4 = 4088
5.先读pc = 4087~4091的值
6.pc = 4088 + 4 = 4092
注:fp,ip,pc 高编号存放高地址(fp(R11),ip(R12),pc(R15))
SP后无感叹号,所以sp仍然为4080
*/
STMDB
stmdb sp!,{fp,ip,pc}
/*
假设sp=4096
1.先减sp = sp - 4 = 4092的值
2.再存:地址4092存pc的值
3.先减sp = sp - 4 = 4088的值
4.再存:地址4088存ip的值
5.先减sp = sp - 4 = 4084的值
6..再存:地址4084存fp的值
注:fp,ip,pc 高编号存放高地址(fp(R11),ip(R12),pc(R15))
SP后有感叹号,所以sp=4084
*/
注:ia 先存后加 db先减后存