屌丝学arm汇编-06-thumb模式下ldr和bl一起使用需要注意的

</pre>1.arm在thumb模式下,pc = pc + 4;但是bl指令在thumb的指令为4byte,这个是个特殊情况,如果我在bl指令之前获取pc的指针,那么其值是否会仍然遵守pc = pc + 4?<p></p><p>2.bl指令执行跳转的时候,lr = 下条指令 + 1,那么我直接ldr 一个 指令标号和数据段的标号,是否仍然是这样?</p><p>演示代码地址:http://download.csdn.net/detail/losting_boy/9621625</p><p><span style="font-family:monospace; white-space:pre; background-color:rgb(240,240,240)"></span></p><pre name="code" class="html">    area    ldr_bl,code,readonly
	entry   
start
	ldr r0,= sub1 + 1   
	bx r0   
	b .   
	code16   
sub1
	mov lr,pc 
	bl	sub2    
	bl	sub2    
	   
    ldr	r0,=buf
    ldr r1,=sub2
sub2
	mov pc,lr (T
	   
	area	data1,data,readwrite      
buf	DCD 0
    end
实验证明:

(1)arm在thumb模式下,pc = pc + 4,无视下条指令是2字节还是4字节,都是依然成立。

(2)ldr加载数据段的标号是原地址,如果加载代码段的标号,则是 标号地址 + 1;

(3)bl指令之后,lr = bl所处地址 + 4 + 1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值