ARM/Thumb汇编语言更新:三菱通讯协议手册

需积分: 0 51 下载量 113 浏览量 更新于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汇编代码时,理解这些变更对于优化和调试至关重要。