ARM/Thumb汇编语言更新:三菱通讯协议手册
需积分: 0 143 浏览量
更新于2024-08-09
收藏 5.66MB PDF 举报
"ARM汇编语言变更-三菱通讯协议参考手册"
在ARM处理器的汇编语言中,随着时间的推移,语法经历了一些显著的变更。这些变更主要体现在对指令的使用方式、寻址模式以及条件码的支持上,提升了编程的灵活性和兼容性。以下是这些变更的详细说明:
1. LDM和STM的默认寻址模式:
以前,LDM(Load Multiple)和STM(Store Multiple)指令默认采用IA(Increment After)模式,现在它们首选LDMIA(Load Multiple Increment After)和STMIA(Store Multiple Increment After)。这使得在处理连续内存区域时更加高效。
2. PUSH和POP的扩展:
现在,PUSH和POP助记符可以用于ARM和Thumb处理器中的降序满堆栈操作,如STMFD(Store Multiple to Stack, Full Descending)和LDMFD(Load Multiple from Stack, Full Descending),以及在ARM和Thumb中直接使用PUSH和POP,增强了通用性。
3. 移位指令的简化:
在ARM和Thumb中,可以直接使用LSL、LSR、ASR、ROR和RRX等移位指令的助记符,而不再需要像以前那样使用MOV指令配合移位操作。例如,`MOV Rd, Rn, LSL shift`现在可以直接写作`LSL Rd, Rn, shift`,使得代码更简洁。
4. PC相对寻址的改变:
以前的PC(Program Counter)相对寻址方式被新的label格式替代,不允许使用offset格式,如`LDR Rd, [pc, #offset]`现在应改为`LDR Rd, label`,增强了代码的可读性。
5. 双字内存访问:
在双字内存访问中,现在可以指定两个寄存器,如`LDRD Rd, Rd2, addr_mode`。尽管如此,仍需遵循关于可用寄存器组合的规则。
6. 条件码的使用:
`{cond}`条件码现在可以作为所有指令的最后一个元素,如`ADD{cond}S`。同时,在ARM和Thumb-2代码中,可以结合使用条件码和IT(If-Then)指令,如`ADDEQ r1, r2, r3`和`LDRNE r1, [r2, r3]`。这允许更精细地控制有条件执行的指令序列。
7. 减少的限制:
以前,如果目标寄存器与第一个操作数相同,某些指令的双寄存器形式是不允许的。现在,这个限制被放宽,如`ADD r1, r1, r3`是合法的,提高了代码效率。
这些变更在RealView编译工具的不同版本中逐步引入,目的是为了提高代码的可移植性和兼容性,同时也简化了程序员的工作。然而,尽管ARM汇编语言变得更加灵活,但使用时仍需遵循相应的规则,以确保代码的正确性和可维护性。在编写ARM汇编代码时,理解这些变更对于优化和调试至关重要。
2024-02-18 上传
菊果子
- 粉丝: 50
- 资源: 3764
最新资源
- MATLAB新功能:Multi-frame ViewRGB制作彩色图阴影
- XKCD Substitutions 3-crx插件:创新的网页文字替换工具
- Python实现8位等离子效果开源项目plasma.py解读
- 维护商店移动应用:基于PhoneGap的移动API应用
- Laravel-Admin的Redis Manager扩展使用教程
- Jekyll代理主题使用指南及文件结构解析
- cPanel中PHP多版本插件的安装与配置指南
- 深入探讨React和Typescript在Alias kopio游戏中的应用
- node.js OSC服务器实现:Gibber消息转换技术解析
- 体验最新升级版的mdbootstrap pro 6.1.0组件库
- 超市盘点过机系统实现与delphi应用
- Boogle: 探索 Python 编程的 Boggle 仿制品
- C++实现的Physics2D简易2D物理模拟
- 傅里叶级数在分数阶微分积分计算中的应用与实现
- Windows Phone与PhoneGap应用隔离存储文件访问方法
- iso8601-interval-recurrence:掌握ISO8601日期范围与重复间隔检查