CODE32 //ARM状态下的代码
LDR R0, =Into_Thumb+1
//产生跳转地址并且设置最低位
BX R0
//Branch Exchange 进入Thumb状态
…
CODE16 //Thumb状态下的子函数
…
LDR R3, =Back_to_ARM
//产生字对齐的跳转地址,最低位被清除
BX R3
//Branch Exchange 返回到ARM状态
CODE32 //ARM状态下的子函数
Bach_to_ARM
…
在上面的程序中,CODE16/CODE32伪指令告诉汇编编译器后面的指令序列分别为Thumb/ARM指令。
这篇博客探讨了在ARM处理器中如何在ARM和Thumb状态之间进行转换的代码实现。通过CODE32和CODE16伪指令,程序在ARM和Thumb模式下执行不同的指令序列。Thumb状态下的代码以更紧凑的形式存在,而ARM状态则提供了更丰富的指令集。文章详细解释了BranchExchange(BXR)指令在状态切换中的作用,并展示了如何生成字对齐的跳转地址。
1019

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



