arm 汇编分支结构的小技巧

arm 汇编分支结构的小技巧

ID:11454011

大小:26.00 KB

页数:3页

时间:2018-07-12

arm 汇编分支结构的小技巧_第1页
arm 汇编分支结构的小技巧_第2页
arm 汇编分支结构的小技巧_第3页
资源描述:

《arm 汇编分支结构的小技巧》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、ARM汇编分支结构的小技巧最近学了点关于ARM的汇编中分支结构的小技巧,拿出来跟大家分享一下。如果您几百年前就看过了或早就精通了,不要笑话俺,俺是初学者:)如果大家也像偶一样是新手不妨看一下,应该没有坏处.计算r1和r2的绝对值对应的C伪指令为:if(r1>r2)r0=r1+r2;elser0=r1-r2;对应的ARM汇编为:cmpr1,r2subgtr0,r1,r2subltr0,r2,r1以上条件判断只适合简单的分支结构,复杂的分之结构如何实现呢???比如如下控制逻辑:if(r1>r2){r0=r1-r2;if(r0>r3)r0=1;elser0=0;}

2、else{r0=r2-r1;if(r0>r3)r0=1;elser0=0;}如果还按照上面的思路则很难写出汇编语句,因为ARM只有一个CPSR寄存器,只能存储一次比较结果。对此问题,有如下四种解决思路:(其中条件LE为无符号小于等于GT为带符号大于EQ为等于)1.使用跳转语句BEGIFCMPR1,R2BLEELSE/*********跳到第二分支************/SUBR0,R1,R2CMPGTR0,R3MOVGTR0,#1MOVLER0,#0BENDIFELSESUBR1,R2,R1CMPGTR0,R3MOVGTR0,#1MOVLER0,#0END

3、IF说明:跳转语句会影响流水线的执行,所以对速度有严格要求的场合要慎用2.通过MSR和MRS两条指令使用通用寄存器或堆栈直接对CPSR进行操作CMPR1,R2MRSLER5,CPSR/****保存CPSR,进入第一个if***/SUBGTR0,R1,R2CMPGTR0,R3MOVGTR0,#1MOVLER0,#0ELSEMSRCPSR,R5SUBLER0,R2,R1CMPR0,R3MOVGTR0,#1MOVLER0,#0说明:在很多if嵌套的情况下,可以使用堆栈保存CPSR的值,但应注意对内存的操作速度要慢于寄存器的速度3.通过临时变量记录比较的结果CMPR

4、1,R2MOVLER5,#1/*用R5记录状态,用1表示R1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。