全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ARM 汇编分支结构的小技巧最近学了点关于ARM的汇编中分支结构的小技巧,拿出来跟大家分享一下。如果您几百年前就看过了或早就精通了,不要笑话俺,俺是初学者:)如果大家也像偶一样是新手不妨看一下,应该没有坏处.计算r1和r2的绝对值对应的C伪指令为:if ( r1r2 )r0 = r1+r2;elser0 = r1-r2;对应的ARM汇编为:cmp r1, r2subgt r0, r1, r2sublt r0, r2, r1以上条件判断只适合简单的分支结构,复杂的分之结构如何实现呢?比如如下控制逻辑:if ( r1r2 )r0 = r1 - r2;if ( r0r3 )r0 = 1;elser0 = 0;elser0 = r2 - r1;if ( r0r3 )r0 = 1;elser0 = 0;如果还按照上面的思路则很难写出汇编语句,因为ARM只有一个CPSR寄存器,只能存储一次比较结果。对此问题,有如下四种解决思路:( 其中条件 LE 为无符号小于等于GT 为带符号大于EQ 为等于)1.使用跳转语句BEGIF CMP R1, R2BLE ELSE /* 跳到第二分支 */SUB R0, R1, R2CMPGT R0, R3MOVGT R0, #1MOVLE R0, #0B ENDIFELSESUB R1, R2, R1CMPGT R0, R3MOVGT R0, #1MOVLE R0, #0ENDIF说明:跳转语句会影响流水线的执行,所以对速度有严格要求的场合要慎用2.通过MSR和MRS两条指令使用通用寄存器或堆栈直接对CPSR进行操作CMP R1, R2MRSLE R5, CPSR /* 保存CPSR,进入第一个if */SUBGT R0, R1, R2CMPGT R0, R3MOVGT R0, #1MOVLE R0, #0ELSEMSR CPSR, R5SUBLE R0, R2, R1CMP R0, R3MOVGT R0, #1MOVLE R0, #0说明:在很多if嵌套的情况下,可以使用堆栈保存CPSR的值,但应注意对内存的操作速度要慢于寄存器的速度3.通过临时变量记录比较的结果CMP R1, R2MOVLE R5, #1 /*用R5记录状态,用1表示R1 R2 */SUBGT R0, R1, R2CMPGT R0, R3MOVGT R0, #1MOVLE R0, #0ELSECMP R5, #1SUBEQ R0, R1, R2CMPEQ R0, R3MOVGT R0, #1MOVLE R0, #04.跳转
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现场急救心肺复苏(CPR)详解
- 2026届四川省宜宾市高三第二次联考历史试卷含解析
- 2026拼多多广告运营面试题及答案
- 2026企业高管面试题目及答案
- 2026人事人员面试题及答案
- 2026社会舆论面试题及答案
- 眼镜展柜转卖合同范本
- 同居老人分居协议书
- 宅基地抵债协议合同
- 迁移劳务关系协议书
- 2026湖南衡阳市衡东县卫健系统招聘专业技术人员46人模拟试卷完整附答案详解
- 2026-2030国内铁路电气设备行业市场发展分析及竞争格局与投资机会研究报告
- 2026-2030中国建筑信息模型(BIM)行业发展状况与前景趋势研究报告
- 2026年学校会计高频面试题包含详细解答
- 2026年秋人教部编版三年级语文上册教案全册
- 后勤管理工作不足对照检查材料范文
- 多病共存患者安全管理
- 2026年新教材人教PEP版(2024)四年级下册英语期末测试卷(含答案)
- 外委施工公司级安全培训课件
- 高二上学期期末英语考前指导课件
- 工程技术交底会会议议程
评论
0/150
提交评论