ARM汇编:Thumb指令集与统一汇编语言详解
1. 切换ARM和Thumb状态
要在ARM和Thumb状态之间进行切换,可使用GCC指令 .arm 和 .thumb 。这两个指令取代了旧版本的 .code32 和 .code16 ,虽然旧指令在树莓派的当前GCC版本中仍可使用,但已不推荐。必要时,这些指令会自动插入最多3字节的填充以对齐到ARM的下一个字边界,或最多1字节的填充以对齐到Thumb的下一个半字边界,因此无需使用 .align 指令。
.arm 和 .thumb 用于指导汇编器进行编译,它们本身不汇编任何指令,只是指示后续代码的状态。若遵循正确的协议(涉及使用 BX 指令),状态更改会自动处理,而无需直接操作CPSR中的第5位。
以下是一个示例程序(Program 27a),展示了如何调用Thumb状态并运行Thumb代码:
@ Use of Thumb code on Raspberry Pi
@ This divide routine is R0/R1
@ with R2=MOD and R3=DIV
.global main
.func main
.arm
main:
ADR R0, thumbcode+1
MOV LR, PC
BX R0
exit:
MOV R0, #0
MOV R7, #1
超级会员免费看
订阅专栏 解锁全文
925

被折叠的 条评论
为什么被折叠?



