ARM杂项伪指令
来源:互联网 发布:mac口红dare you和d 编辑:程序博客网 时间:2024/06/10 19:35
1. ADR伪指令:小范围的地址读取伪指令。
ADR指令将基于PC相对偏移的地址值读取到寄存器中。在汇编编译源程序时,ADR伪指令被编译器替换成一条合适的指令。通常编译器用一条ADD指令或SUB指令来实现该ADR伪指令的功能。
指令格式:ADR{cond} register ,expr
Register 加载的寄存器
Expr 程序相对偏移或寄存器相对偏移的表达式
非字对齐地址在-255~255字节范围内;
字对齐地址在-1020~1020字节范围内。
举例:
Start MOV R1,#10
ADR R4,start ;相当于PC-10后赋值给R4
2. ADRL指令:中等范围的地址读取伪指令。
ADRL指令将基于PC相对偏移的地址值或基于相对偏移的地址值读取到寄存器中,比ADR伪指令可读取更大范围的地址。在汇编编译源程序时,ADRL伪指令被编译器替换成两条合适的指令。若不能用两条指令实现ADRL伪指令功能,则产生错误,编译失败。
其指令格式与ADR相同
非字对齐地址在64K字节范围内;
字对齐地址在256K字节范围内。
举例:
Start MOV R1,#10
ADR R4,start+6000 ;=>ADD R4,PC,#0xe800 ADD R4,R4,#0x254
3. LDR指令 大范围的地址读取伪指令
LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器。
在汇编编译源程序时,LDR指令被编译器替换成一条合适的指令,若加载的常数未超出MOV或MVN的范围,则使用MOV或MVN指令代替该LDR伪指令,否则汇编器将常量放入字池(内存),并使用一条程序相对偏移的LDR指令从文字池读出常量。
指令格式:LDR {cond} register , = expr/label_expr
Expr 32位立即数
Label_expr 基于PC的地址表达式或外部表达式
举例
LDR R0,=0x123987 ;加载32位立即数
LDR R0,=DATA_BUF+60 ;加载DATA_BUF地址+60
4. NOP指令
NOP指令产生所需的ARM无操作代码。可以使用指令MOV R0,R0。NOP不能有条件使用。执行和不执行无操作指令是一样的,因而不需要有条件执行。ALU状态不受NOP影响。
- ARM杂项伪指令
- ARM伪指令
- ARM伪指令
- ARM 汇编伪指令
- ARM 伪指令
- ARM汇编语言伪指令
- ARM汇编语言伪指令
- ARM 伪指令
- arm伪指令
- ARM汇编伪指令
- ARM汇编伪指令
- ARM汇编伪指令
- ARM伪指令
- ARM伪指令集
- ARM汇编语言伪指令
- ARM 伪指令详解
- ARM汇编伪指令
- ARM汇编语言伪指令
- Python的一些简单示例(2)
- 设计模式是一个程序的主体!
- 59. Spiral Matrix II
- 字符串换行
- 导出(下载)数据库查询的数据生成csv文件
- ARM杂项伪指令
- 【bzoj3930】【SCOI2015】【选数】【容斥】
- Bzoj3028:食物:生成函数
- Jqyery根据行序号和列序号获取单元格
- mysql-5.5.32源码安装
- GPS 常数 变量 精度
- [蓝牙] 6、基于nRF51822的蓝牙心率计工程消息流Log分析(详细)
- decorators.xml的用法
- 发现一个专家的博客,写的非常好