arm汇编学习(六)---跳转到thumb状态
通常函数返回使⽤ pop {r7,pc}或bx lr等⽅式(bx,b类似jmp为跳转指令,但bx可以指定跳转区域究竟为thumb还是arm指令。可乐喷泉
thumb指令指令的时候,直接填写该地址却总是产⽣SIGSYS信号(⾮法指令执⾏)。
原因就是该函数为thumb指令,因此跳转时必须要把指令地址的最低位设置为1(bx 通过这⼀位来区分指令集),所以函数地址就加了⼀。
江南味道thumb指令集与arm指令集切换喜爱夜蒲歌曲
mov
R0,#5;Argument to function is in R0
add
R1,PC,#1;Load address of SUB_BRANCH, Set for THUMB by adding 1
BX R1 ;R1 contains address of SUB_BRANCH+1
;Asmbler-specific instruction to switch to Thumb
SUB_BRANCH:
BL手工灯笼怎么做的又简单又漂亮
thumb_sub ;Must be in a space of +/- 4 MB
add
R1,#7;Point to SUB_RETURN with bit 0 clear
枢密院BX
R1
;Asmbler-specific instruction to switch to ARM
SUB_RETURN:
arm状态下指令的地址末两位都是0qq如何建群
手掌长痣代表什么⽽thumb状态下指令地址的末尾是0
函电thum1+1表明你即将跳⼊thumb状态,系统会⾃动调整地址的