24、ARM汇编:Thumb指令集与统一汇编语言详解

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
   
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值