ARM指令的寻址方式

总共7种寻址方式:
1.立即寻址
例如:ADD R0,R0 #1;
2.寄存器寻址
例如:ADD R0,R1 R2;
3.寄存器间接寻址
例如:ADD R0,R0,[R1]; //将R1里的值作为地址取出数据,与R0的值相加放入R0;
4.基址变址寻址
例如:LDR R0,[R1, #4]; //将R1里的值加4作为地址,取出该地址的数据放入R0。
LDR R0,[R1, #4]!;进行如上操作后,R1里的值自增4
5.多寄存器寻址
例如:LDMIA R0,{R1,R2,R3,R4};//将R0 -> R1;
R0+4 -> R2;
R0+8 -> R3;
R0+12 -> R4;
6.相对寻址
例如:BL NEXT;
.....
NEXT
......
MOV PC LR;
//将PC作为基地址,指令中的地址标号作为偏移量,两者相加得到操作数的有效地址。类似于基址变址寻址;
7.堆栈寻址
堆栈是一种先进后出的工作方式使用一个称作堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。
当堆栈指针指向最后压入堆栈的数据时成为满堆栈,当堆栈指针指向下一个要放入数据的空位置时成为空堆栈。
按照堆栈的生成方式又可以分为递增堆栈和递减堆栈,当堆栈从地址值向高地址生成时称为递增堆栈,当堆栈从高地址向低地址生成时称为递减堆栈。
所以堆栈公有4种工作方式:
1、满递增堆栈
2、满递减堆栈
3、空递增堆栈
4、空递减堆栈

你可能感兴趣的:(ARM)