ImageVerifierCode 换一换
格式:PPT , 页数:35 ,大小:831.50KB ,
资源ID:5889855      下载积分:12 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/5889855.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(ARM体系结构及编程模型.ppt)为本站上传会员【快乐****生活】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

ARM体系结构及编程模型.ppt

1、第,3,章,ARM,指令系统,ARM,原理与应用,上讲知识回顾,ARM,微处理器格式;,3,个必不可少部分,,3,个可选择部分,ARM,微处理器指令的寻址方式,立即数寻址(立即数格式,常数表达式),寄存器寻址、,寄存器偏移寻址(第,2,操作数移位方式:,6,种),本讲学习内容,1,、,ARM,跳转指令(了解),2,、,ARM,数据处理指令(熟悉),3,、,ARM,存储器访问指令(掌握),第三章,ARM指令系统,二、寄存器移位寻址,1)寄存器移位寻址,当第二操作数为寄存器型时,在执行寄存器寻址操作时,也可以对第二操作数寄存器进行移位,此时,第二操作数,形式为:,MOV Rd,Rn,Rm,,其中:

2、Rm,称为第二操作数寄存器,用来指定移位类型和移位位数,有两种形式:,5,位立即数(其值小于,32,),寄存器,(,用,Rs,表示,),(其值小于,32,),在指令执行时将寄存器移位后的内容作为第二操作数参与,运算。,例如,指令:,ADD R3,,,R2,,,R1,,,LSR#2,;,R3R2+(R1,右移,2,位,),ADD R3,,,R2,,,R1,,,LSR R0,;,R3R2+(R1,右移,R0,位,),2),第二操作数移位方式,共有,6,种移位方式:,LSL,逻辑左移,LSR,逻辑右移,ASL,算术左移,ASR,算术右移,ROR,循环右移,RRX,带扩展的循环右移,(,1,),LS

3、L,:逻辑左移,,空出的最低有效位用,0,填充。,0,31 0,0,(2)LSR:逻辑右移,,空出的最高有效位用0填充。,31 0,SUB R3,R2,R1,LSL#2;R3R2-(R1左移2位),SUB R3,R2,R1,LSR R0;R3R2-(R1右移R0位),0,(,3,),ASL,:算术左移,,由于左移空出的有效位用,0,填充,因此它与,LSL,同义。,(,4,),ASR,:算术右移,(Arithmetic Shift Right),。算术移位的对象是带符号数,移位过程中必须保持操作数的符号不变。如果源操作数是正数,空出的最高有效位用,0,填充,如果是负数用,1,填充。,ADD R3

4、R2,,R1,ASL#2,;R3R2+(R1左移,2,位),SUB R3,R2,,R1,ASR R3,;R3R2-(R1算术右移,R3,位),30,0,(,5,),ROR,:循环右移,(Rotate Right),,移出的字的最低有效位依次填入空出的最高有效位。,31,0,(,6,),RRX,:带进位位的循环右移,(Rotate Right Extended),。将寄存器的内容,循环右移,1,位,,空位用原来,C,标志位填充。,31 0,C,SUB R3,R2,,R1,ROR#2,;R3R2+(R1循环右移,2,位),SUB R3,R2,,R1,RRX R0,;R3R2-(R1带进位位循环右

5、移,R0,位),3)第二操作数的移位位数,移位位数可以用立即数方式或者寄存器方式给出,,其值均小于32,应为0-31。,如下所示:,ADD R3,R2,,R1,LSR#2,;R3,R2+(R1右移2位),ADD R3,R2,,R1,LSR R4,;R3,R2+(R1右移R4位),寄存器R1的内容分别逻辑右移2位、R4位,再与寄存器R2的内容相加,结果放入R3中。,3.寄存器间接寻址,就是以,寄存器中的值作为操作数的地址,,而操作数本身存放在存储单元中。例如以下指令:,LDRR0,,,R1;R0R1,STRR0,,,R1;R1R0,指令,1,将,以,R1,的值为地址的存储单元中的内容加载到寄存器

6、R0,中。,指令,2,将,R0,的内容存储到以,R1,的值为地址的存储单元中。,R1,基址寄存器,R1,的内容,基地址,3.4 ARM,指令分类,(1),跳转指令,在,ARM,中有两种方式可以实现程序的跳转:,一种是使用分支转移指令直接跳转;,另一种则是直接向,PC,寄存器赋值来实现跳转,。,ARM,的分支转移指令,可以从当前指令向前或向后的,32MB,的地址空间跳转,根据完成的功能它可以分为以下,4,种:,B,-,分支指令,BL-,带,链接的分支指令,BX,-,带,状态切换的分支指令,BLX,-,带,链接和状态切换的分支指令,1,),B转移指令,指令格式如下:,Bcond label,B指

7、令跳转到指定的地址执行程序。,指令举例如下:,B WAITA ;跳转到WAITA标号处,B 0 x1234 ;跳转到绝对地址0 x1234处,转移指令B限制在当前指令的,32 MB的范围内。,例子:,无条件跳转:,B label,label ,执行10次循环:,MOV R0,#10,LOOP,SUBS R0,R0,#1,BNE LOOP,2,),BL带链接的转移指令,指令格式如下:,BLcond label,BL指令先将,下一条指令的地址拷贝到LR,链接寄存器中,然后跳转到指定地址运行程序。,指令举例如下:,BL SUB1 ;LR,下条指令地址,;转至子程序SUB1处,SUB1 ,MOV PC

8、LR;子程序返回,注意:,转移地址限制在当前指令的32 MB的范围内。BL指令用于子程序调用。,例子:根据不同的条件,执行不同的子程序。,CMP R1,#5,BLLT ADD11,;有符号数,BLGE SUB22,;有符号数,ADD11,SUB22,注:,如果,R15,,只有,ADD11,不改变条件码,本例才能正常工作。,例子:,BL SUB1,SUB1,STMFD R13,!,R0-R3,R14,BL SUB2,SUB2 ,注意:,在,保存,R14,之前子程序不应再调用下一级的嵌套子程序。否则,新的返回地址将覆盖原来的返回地址,就无法返回到原来的调用位置。,3,),BX带状态切换的转移指令

9、指令格式如下:,BXcond Rm,BX指令跳转到Rm指定的地址执行程序。,若,Rm的位0为1,,则跳转时自动将CPSR中的标志,T置位,,即把目标地址的代码解释为Thumb代码;,若,Rm的位0为0,,则跳转时自动将CPSR中的标志,T复位,,即把目标地址的代码解释为ARM代码。,指令举例如下:,ADRL R0,ThumbFun+1,;中等范围的地址读取伪指令,BX R0 ;跳转到R0指定的地址,并,;根据R0的最低位来切换处理;器到Thumb状态。,.,ThumbFun,4)BLX,带链接和状态切换的转移指令,指令格式如下:,BLX ,BLX指令先将下一条指令的地址拷贝到R14(即LR)

10、连接寄存器中,然后跳转到指定地址处执行程序。(只有V5T及以上体系 支持BLX),转移,地址限制在当前指令的32MB的范围内。,3.4.2,数据处理,指令,主要指令有:,1)算术运算指令,2)逻辑运算指令,3)数据传送指令,4)比较指令,5)测试指令,1)数据处理指令概述,(1)ARM数据处理指令的功能,主要完成寄存器中数据的算术和逻辑运算操作。,(2)ARM数据处理指令的特点,操作数来源:,所有的操作数要么来自寄存器,要么来自立即数,不会来自存储器。,操作结果:,如果有结果,则结果一定是为32位宽、或64位宽(长乘法指令),并且放在一个或两个寄存器中,不会写入存储器。,有第二个操作数(除了乘

11、法指令)Operand2,:切记其三种形式:立即数、寄存器、寄存器移位。,乘法指令的操作数:,全部是寄存器。,(3)ARM数据处理指令分类,22条可分为5类:,算术运算指令:,ADD ADC,SUB SBC RSB RSC,MUL MLA UMULL UMLAL SMULL SMLAL,逻辑运算指令:,ANDORR EOR BIC,数据传送指令:,MOV MVN,比较指令:,CMP CMN,测试指令:,TST TEQ,上述指令只能对寄存器操作,不能针对存储器。,(4)数据处理指令对程序状态寄存器CPSR的影响,选择“S”后缀问题:,指令中可以选择s后缀,以影响状态标志。但是比较指令(cmp、c

12、mn、tst和teq)不需要后缀S,它们总会直接影响CPSR中的状态标志。,对CPSR中标志位的影响:,标志位:,如果结果为负,则标志位置;否则清。,标志位:,如果结果为,则标志位置;否则清。,标志位:,如果是加、减运算指令或比较指令时,标志位设置为的进位输出;否则设置为移位器的移位输出。如果不需要移位,则保持不变。,标志位:,在非加减操作中,标志位保持原值。在加减操作中,如果有溢出,则置;不发生溢出,则清。,(,5)数据处理指令的详细列表(未含6条乘法指令),操作码24:21,助记符,意 义,效 果,0000,AND,逻辑位与,Rd=Rn AND Op2,0001,EOR,逻辑位异或,Rd=

13、Rn EOR Op2,0010,SUB,减,Rd=Rn-Op2,0011,RSB,反向减,Rd=Op2 Rn,0100,ADD,加,Rd=Rn+Op2,0101,ADC,带进位加,Rd=Rn+Op2+C,0110,SBC,带进位减,Rd=Rn-Op2+C-1,0111,RSC,反向带进位减,Rd=Op2-Rn+C-1,1000,TST,测试,根据,Rn AND Op2,设置条件码,1001,TEQ,测试相等,根据,Rn EOR Op2,设置条件,1010,CMP,比较,根据,Rn-Op2,设置条件码,1011,CMN,负数比较,根据,Rn+Op2,设置条件码,1100,ORR,逻辑位或,Rd=

14、Rn OR Op2,1101,MOV,传送,Rd=Op2,1110,BIC,位清零,Rd=Rn AND NOT Op2,1111,MVN,求反,Rd=NOT Op2,2)算术运算指令,一、加减运算指令,(1,),ADD加法运算指令,指令格式,ADDcondS Rd,Rn,operand2,ADD指令将operand2的数据与Rn的值相加,结果保存到Rd寄存器,指令举例,ADDS R1,R1,#1 ;R1R1+1,ADDS R3,R1,R2,LSL#2;R3R1+R22,(2,),ADC带进位加法指令,指令格式,ADCcondS Rd,Rn,operand2,ADC指令将operand2的数据与

15、Rn的值相加,再加上CPSR中的C条件标志位,结果保存到Rd寄存器。,指令举例,ADDS R4,R0,R2 ;使用ADC实现64位加法,ADC R5,R1,R3 ;(R5、R4)(R1、R0)+(R3、R2),(3,),SUB减法运算指令,指令格式,SUBcondS Rd,Rn,operand2,SUB指令用寄存器Rn减去operand2,结果保存到Rd中。,指令举例,SUBS R0,R0,#l ;R0R0-1,SUB R6,R7,#0 x10 ;R6R7-0 x10,(4,),SBC带进位减法指令,指令格式,SBCcondS Rd,Rn,operand2,SBC指令用寄存器Rn减去opera

16、nd2,再减去CPSR中的C条件标志位的反码,结果保存到Rd中。,指令举例,SUBS R4,R0,R2 ;使用SBC实现64位减法,,SBC R5,R1,R3 ;(R5,R4)(R1,R0)-(R3,R2),(,5,),MUL32位乘法指令,指令格式如下:,MULcondS Rd,Rm,Rs ;Rd,Rm*Rs,MUL指令将Rm和Rs中的值相乘,结果的低32位保存到Rd中。,指令举例如下:,MUL R1,R2,R3 ;R1=R2R3,MULS R0,R3,R7 ;R0=R3R7,,;设置CPSR的N位和Z位,二、乘法指令,ARM有两类乘法指令:,32位的乘法指令,即乘法操作的结果为32位;,6

17、4位的乘法指令,即乘法操作的结果为64位。,助记符,说 明,操 作,MUL Rd,Rm,Rs,32位乘法指令,Rd,Rm*Rs(Rd,Rm),MUA Rd,Rm,Rs,Rn,32位乘加指令,Rd,Rm*Rs+Rn(Rd,Rm),UMULL RdL,RdH,Rm,Rs,Rn,64位无符号乘法,(RdL,RdH),Rm*Rs,UMAL RdL,RdH,Rm,Rs,Rn,64位无符号乘加,(RdL,RdH),Rm*Rs,SMULL RdL,RdH,Rm,Rs,Rn,64位有符号乘法,SMULL RdL,RdH,Rm,Rs,Rn,64位有符号乘加,乘法指令的特点,不支持第2操作数为立即数。,结果寄存器

18、不能与第一源寄存器相同。,Rd、RdHi、RdLo不能与Rm为同一寄存器。,RdHi和RdLo不能为同一寄存器。,避免将R15定义为任一操作数或结果寄存器。,早期的ARM处理器仅支持32位乘法指令。ARM7版本和后续的在名字中有M的处理器才支持64位乘法指令。,3,)逻辑运算指令,(1,),AND逻辑“与”操作指令,指令格式如下:,ANDcondS Rd,Rn,operand2,AND指令将operand2的值与寄存器Rn的值按位逻辑“与”操作,结果保存到Rd中。,指令举例如下:,ANDS R0,R0,#0 x01 ;R0R0&0 x01,;取出最低位数据,AND R2,R1,R3 ;R2R1

19、R3,AND指令可用于提取寄存器中某些位的值,。,(2,),ORR逻辑“或”操作指令,指令格式如下:,ORRcondS Rd,Rn,operand2,ORR指令将operand2的值与寄存器Rn的值按位逻辑“或”操作,结果保存到Rd中。,指令举例如下:,ORR R0,R0,#0 x0F ;将R0的低4位置1,ORR指令用于将寄存器中某些位的值设置成1。,4)数据传送指令,(1,),MOV数据传送指令,指令格式如下:,MOVcondS Rd,operand2,MOV指令将operand2传送到目标寄存器Rd中。,指令举例如下:,MOV,S,R3,R1,LSL#2 ;R3R12 ,,影响标志位,MOV PC,LR ;PC,LR,子程序返回,MOV指令的功能,寄存器之间传送,。,立即数传送到寄存器中,。(8位立即数位图),实现单纯的移位操作,。MOV Rd,Rd,LSL,#3,实现子程序调用、从子程序中返回,。当PC寄存器作为目标寄存器时可以实现程序跳转。,实现把当前处理器模式的SPSR寄存器内容复制到CPSR中,。,

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服