ARM高分笔记--(三)ARM寻址方式
来源:互联网 发布:淘宝店铺无法订购花呗 编辑:程序博客网 时间:2024/05/18 05:37
寻址方式就是说: 处理器根据指令中给出的地址信息来寻找物理地址的方式
一、立即寻址
立即寻址也叫立即数寻址,就是说:操作数本身就在指令中,这个操作数就叫立即数。所以这种指令对应的寻址方式就叫立即寻址。
eg:
ADD R0,R0,#1 ; R0= R0+1
注意: 当操作数作为立即数时,必须以“#”为前缀,对于16进制的立即数还要加上 “0x“ 或 ”&“
二、寄存器寻址
寄存器寻址就是:利用寄存器中的数值作为操作数。(这种寻址方式执行效率较高)
eg:
ADD R0 , R1 , R2 ; R0 = R1+R2
三、寄存器间接寻址
寄存器间接寻址就是:以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中
eg:
ADD R0 , R1 ,[R2] ; R0 = R1+R2 [ ] 表示取值符
四、基址变址寻址
基址变址寻址就是:将寄存器(基址寄存器)的内容与地址中给出的地址偏移量相加,从而得到一个操作数的有效地址
eg:
(1) LDR R0 , [R1 , #4] ; R0 = [R1 + 4] (2) LDR R0 , [R1 , #4]! ; R0 = [R1 + 4] , ! 叹号表示,同时还要改变基址寄存器中的值,R1 = R1 + 4(3) LDR R0 , [R1], #4 ; R0 = [R1] 同时 改变基址寄存器的值 R1 = R1+4(4)LDR R0 , [ R1 , R2] ; R0 = [ R1 + R2]
判断是否位基址变址寻址的关键是看:最后基址寄存器是否有改变,如eg (3),如果不改变就是寄存器寄存器间接寻址
五、多寄存器寻址
多寄存器寻址: 一条指令可以完成多个寄存器值的传送
这种寻址方式可以用一条指令传送最多16个通用寄存器的值
eg:
LDMIA R0 , {R1,R2,R3,R4} ; R1 = [R0] , R2 = [R0+4] , R3 = [R0+8] ,R4 = [R0+12]
其中,后缀 IA 表示每次执行完 加载/存储 操作后,R0 按字长度增加
六、相对寻址
相对寻址就是: 以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址
eg:
BL NEXT ; 跳转指令BL就采用了相对寻址.....NEXT .........MOV PC,LR;
七、堆栈寻址
堆栈是一种数据结构(它其实就是存储器中的一块连续存储单元,配合一个专用寄存器--存放堆栈指针实现的一种工具),它按先进先出的方式工作。
这里的专用寄存器叫堆栈指针,用来指示当前堆栈的操作位置,堆栈指针总是指向栈顶
名词解释:
递增堆栈:数据向高地址方向生长
递减堆栈:数据向低地支方向生长
满堆栈:堆栈指针指向最后一个数据
空堆栈:堆栈指针指向最后一个数据的下一个位置
- ARM高分笔记--(三)ARM寻址方式
- 寻址方式(ARM)
- ARM裸机开发笔记4(ARM寻址方式)
- arm学习笔记二(arm寻址方式)
- ARM高分笔记--(二)ARM寄存器
- ARM寻址方式(6.18)
- ARM寻址方式小结 [ARM]
- 【ARM基础知识】ARM寻址方式
- ARM学习笔记(八)--寻址方式
- ARM汇编语言学习笔记之寻址方式
- ARM指令寻址方式
- ARM的寻址方式
- ARM指令寻址方式
- ARM 处理器寻址方式
- ARM汇编--寻址方式
- ARM指令寻址方式
- ARM 指令寻址方式
- ARM指令寻址方式
- 什么是数据库分表技术
- strictmode
- HDU 4649 Professor Tian (2013多校联合5 1007)
- [leetcode刷题系列]First Missing Positive
- HDU 1070 Milk
- ARM高分笔记--(三)ARM寻址方式
- 数据结构--树和二叉树
- squid---StatCounters.h
- Python 列表和元组
- hdu 2190 : 悼念512汶川大地震遇难同胞——重建希望小学
- 浅析OpenGL光照
- php中对象转换数组与数组转换对象实例
- 【iOS开发】.h,.m,.mm,.cpp等区别
- 整数划分问题---动态规划、递归