ARM的寻址方式好像没有官方的定论,网间传闻的9种寻址方式分别是:
1、立即寻址; 2、寄存器直接寻址; 3、寄存器间接寻址; 4、寄存器偏移寻址; 5、寄存器基址变址寻址; 6、批量(多)寄存器寻址; 7、相对寻址; 8、堆栈寻址; 9、块拷贝寻址。
对于这种方式,我并不赞同。首先 所谓 “多寄存器寻址” 和 “块拷贝寻址”,看不出有什么区别呀!
我提出以下几种归类方式:
1、立即数寻址;
2、寄存器直接寻址;
这里的直接寻址有两种情况:
一是,寄存器R 中的数据可以直接使用;
另一种情况是,寄存器R 中的数据要经过位移,再使用,也就是“九种寻址方式” 中的 “寄存器偏移寻址”;
3、寄存器间接寻址;
这里也分两种:
一是,直接使用寄存器R 所指地址进行数据的访问;
另一种情况是,寄存器R 所指地址经过加、减运算得到新的地址后,再访问新地址的数据;也就是 “九种寻址方式” 中的 “寄存器基址变址寻址”。
4、多寄存器寻址;
这也是分两种情况:(这里的多寄存器指的是 多个寄存器与内存之间的数据交换,内存到内存的大量数据传输一般是由内存控制器处理或者分成多个寻址动作处理)
一是,针对堆栈的批量数据操作