ARM指令需要注意的几点问题

1、对于BX 分支并且转换状态指令,需要注意 在指令最低位确定分支处的代码类型(ARM=1,THUMB=0),因此我们可以通过指令修改最后一位,使BX指令等效转化成由具有BL功能的其它几条指令。

ADRL R0,THUMBFUN+1;无论字对齐还是半字对齐,最低位都为零,而转换处理器状态需要设置最低位,因此进入thumb需该最低位进入ARM则不需要。

BX R0;跳转到RO位置,并通过设置其最低位修改处理器工作状态。

2、再者要注意块传送指令的增减状态,及LDM,STM 在与R15及^搭配使用时需要注意的指针回写问题。

3、ADR、ADRL伪指令的偏移情况,需要重视,这条指令的偏移是相对于程序和寄存器的,往往是体现目的地址相对于本指令PC的偏移量。

4、PC的变化情况也是一个相当值得注意的问题,见以下链接http://blog.csdn.net/liukun321/archive/2010/05/15/5594342.aspx

5、IMPORT XXXXXX, 若在链接时没有对应的符号,则在

b XXXXXX;此处跳转地址将变为该指令的地址,从而程序死在这里

其它情况下 XXXXXX为 零。

6、要灵活运用ASSERT及INFO指令为代码排错。

7、对立即数操作的问题值得重视,http://blog.csdn.net/liukun321/archive/2010/05/13/5588380.aspx

8、LDR伪指令,中的偏移是相对于literal pool的。顾偏移范围最大不能超过4K。

9、SWI的进入及返回。http://blog.csdn.net/liukun321/archive/2010/05/09/5571478.aspx

http://blog.csdn.net/liukun321/archive/2010/05/13/5588212.aspx

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值