- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
例如:把8个字从r0指向的位置拷贝到r1指向的位置,即 LDMIA r0!,{r2–r9} STMIA r1,{r2–r9}执行后,r0增加了32。这是由于“!”使其自动变址8个字节,而r1没有改变。如果r2-r9含有有用的数据,则可以先把它们压入堆栈,即 STMFD r13!,{r2-r9} ;将寄存器压栈 LDMIA r0!,{r2–r9} STMIA r1,{r2–r9} LDMFD r13!,{r2–r9} ;从堆栈中恢复后缀“FD”表示满递减堆栈寻址模式。注意,在堆栈操作中几乎总是要指定自动变址,以便保证堆栈指针具有一致的行为。多寄存器Load和Store指令为保存和恢复处理器状态以及在存储器中移动数据块提供了一种有效方式。它节省代码空间,并且其执行速度提高了4倍。这个重要的优点说明,值得认真考虑数据在存储器中的组织方式,以便增大使用多寄存器传送指令去访问存储器的潜力。递增A(入栈时)递减D(入栈时)满空满空增值先增STMIBSTMFALDMIBLDMED后增STMIASTMEALDMIALDMFD减值先减LDMDBLDMEASTMDBSTMFD后减LDMDALDMFASTMDASTMED控制流指令既不处理数据,也不存取数据,它只是确定下一步执行哪一条指令。1转移指令2条件转移3条件执行4转移链接5子程序返回6监控程序调用7跳转表83.3控制流指令B LABEL…LABEL …将程序的执行从一个位置切换到另一个位置最常用的方法是使用转移(branch)指令,01LABEL ……B LABEL或02转移指令(无条件转移)有时想让微处理器决定是否进行转移。MOV r0,#0 ;计数器初始化LOOP …ADD r0,r0,#1 ;循环计数器加一CMP r0,#10 ;与循环的限制比较BNE LOOP ;如不相等则返回… ;否则循环终止条件转移转移解释一般应用B无条件总是执行转移BEQ相等BNE不等BPL正BMI负BCCBLO无进位、低于无符号数比较BCSBHS有进位、高于或相等无符号数比较BVC无溢出有符号数比较BVS有溢出有符号数比较BGT大于有符号数比较BGE大于或相等有符号数比较BLT小于有符号数比较BLE小于或相等有符号数比较BHI高于无符号数比较BLS低于或相等无符号数比较列在表中同一行的一对条件(如和)的含义相同,并得到同样的二进制代码。但两者都是有用的,因在特定的环境中,每一种条件都可能使汇编语言源代码的编译更加容易。当表中提到有符号数和无符号数的比较时,它并不是要选择比较指令本身,而只是支持操作数选择的解释。CMP r0,#5BEQ BYPASS ;if(r0!=5){ADD r1,r1,r0 ;r1:=r1+r0-r2SUB r1,r1,r2 ;}BYPASS …ARM指令集有一条不寻常的特征,就是条件执行不仅应用于转移指令,也应用于所有的ARM指令。01CMP r0,#5 ;if(r0!=5){ADDNE r1,r1,r0 ;r1:=r1+r0-r2SUBNE r1,r1,r2 ;}…替代为02条件执行要激活条件执行,须在3字符的操作码之后增加2字符的条件码(条件码应在其它任何修正码之前)。;if((a==b)(c==d))e++;CMP r0,r1CMPEQ r2,r3ADDEQ r4,r4,#1由于第二个比较指令使用了条件执行,从而实现了if语句中的逻辑“与”。使用条件执行的示例Euclid(欧几里德)的最大公因子(gcd)算法的两种实现方法。它说明了如何能使用条件执行来改进代码密度和执行速度。在C语言中,该算法可以表示如下: intgcd(inta,intb){ while(a!=b){ if(ab) a=a?b; else b=b?a; } returna; }采用下列代码,可以只用带条件跳转来实现gcd函数:gcd CMP r0,r1 BEQ end B
您可能关注的文档
最近下载
- 《项目1中华优秀传统文化我知道》(教学设计)-2024-2025学年河北大学版2024小学信息技术三年级全一册.docx VIP
- 物流配送路径优化研究.docx
- 久溪威士忌酒生产项目环境影响报告.pdf
- 2025年环境影响评价工程师之环评技术方法考试题库word.docx VIP
- 文学类文本阅读之“文学短评类”试题规范解答指导.docx VIP
- HELEN新概念第二册第41课.ppt
- (一模)泰安市2025届高三一轮检测语文试卷(含标准答案).docx
- 2024年贵阳市贵安新区产业发展控股集团有限公司招聘笔试参考题库附带答案详解.pdf
- 2024年袋鼠数学竞赛Level-C (5-6年级) 真题含、解析.pdf
- 2025年PMP项目管理师考试重点难点试题集详解.docx VIP
文档评论(0)