您的位置 首页 芯闻

arm汇编学习(六)跳转到thumb状况

通常函数返回使用pop{r7,pc}或bxlr等方式(bx,b类似jmp为跳转指令,但bx可以指定跳转区域究竟为thumb还是arm指令。thumb指令指令的…

一般函数回来运用 pop {r7,pc}或bx lr等方法(bx,b相似jmp为跳转指令,但bx能够指定跳转区域究竟为thumb仍是arm指令。

thumb指令指令的时分,直接填写该地址却总是发生SIGSYS信号(不合法指令履行)。
原因便是该函数为thumb指令,因而跳转时有必要要把指令地址的最低位设置为1(bx 经过这一位来区别指令集),所以函数地址就加了一。

thumb指令集与arm指令集切换

movR0,#5     ;Argument to function is in R0addR1,PC,#1     ;Load address of SUB_BRANCH, Set for THUMB by adding 1BX     R1     ;R1 contains address of SUB_BRANCH+1;Assembler-specific instruction to switch to ThumbSUB_BRANCH:BLthumb_sub     ;Must be in a space of +/- 4 MBaddR1,#7     ;Point to SUB_RETURN with bit 0 clearBXR1;Assembler-specific instruction to switch to ARM SUB_RETURN:

arm状况下指令的地址末两位都是0
thumb状况下指令地址的结尾是0
thum1+1标明你行将跳入thumb状况,体系会主动调整地址的

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/xinwen/276422.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部