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

开通VIP
 

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

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

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

注意事项

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

ARM处理器指令系统.pdf

1、ARM指令系统目录口 1.ARM处理器寻址方式口 2.指令集介绍-ARM指令集 Thumb指令集目录口 2.指令集介绍 ARM指令集 Thumb指令集ARM指令系统简介ARM处理器是基于精简指令集计算机(RISC)原 理设计的,指令集和相关译码机制较为简单。带有 T变量的ARM核具有 和,ARM指令集效率高,但是代码密度低;而 Thumb指令集具有较高的代码密度,却仍然保持 ARM的大多数性能上的优势,它是ARM指令集的 子集。所有的ARM指令都是可以有条件执行的,而 Thumb指令仅有一条指令具备条件执行功能。ARM 程序和Thumb程序可相互调用,相互之间的状态切 换开销几乎为零。ARM指

2、令系统ARM指令集与Thumb指令集的关系ARM处理器寻址方式寻址方式分类寻址方式是根据指令中给出的地址码字段来实 现寻找真实操作教地址的方式。ARM处理器具有9种基本寻址方式。1.寄存器寻址;3.寄存器移位寻址;5.基址寻址;7.堆栈寻址;9.相对寻址。2.立即寻址;4.寄存器间接寻址;6.多寄存器寻址;8.块拷贝寻址;ARM处理器寻址方式寻址方式分类寄存器寻址操作教的值在寄存器中,指令中的地址码字设厚取出琴右器Mil Ox AA)1!R0MOV RI,R2ARM处理器寻址方式寻址方式分类-立即寻址立即寻址指令中的操作码字段后面的地址码部当(这MOV RO,#0 xFF00tSSi Ox F

3、FOOMOV R0a#0 xFF00ARM处理器寻址方式寻址方式分类寄存器移位寻址寄存器移位寻址是ARM指令集特有的寻址方式。当第2个燥体数舁零右露居住方式操 作R20 x 010 x 08R0相MOV R0,R2,LSL#3ARM处理器寻址方式寻址方式分类寄存器间接寻址匕者右器的编罟,所乘的操作条保在方去右器能0 x 40000000Ox AA寄存器间接寻址指令中的地址码给出的是一个R20 x 40000000Ox AALDR Rlf R2ARM处理器寻址方式寻址方式分类基址寻址基址寻址就是将基址寄存器的内余与指令中给出的偏移量4址 组 例0 x 4000000COx AAR3 0 x 40

4、000000R2Ox AALDRARM处理器寻址方式寻址方式分类多寄存器寻址多寄存器寻址一次可传送几个寄存器值,允许冬指冬枝凑16个寿右米的任何孑果至所有去右舞CR4R3R20 x 040 x 030 x 020 x 010 x 04 0 x 4000000C0 x 02 0 x 40000004多 R60 x 40000010LDR RI!,R2-R4,R6ARM处理器寻址方式寻址方式分类堆栈寻址堆找是一个按特定顺序进行存取的存储区,操 作顺序为“后进先出”。堆找寻址是隐含的,它使 用一个专门的寄存器(堆找指针)指向一块存储区域(堆枝),指针所指向的存储单元即是堆找的找顶。存储器堆枝可分为两

5、种:句上生长:句高地址方向生长,称为遗增堆找句下生长:向低地址方向生长,称为遹减堆找ARM处理器寻址方式寻址方式分类堆栈寻址0 x12345678ARM处理器寻址方式寻址方式分类堆栈寻址堆找指针指向最后压人的堆找的有效数据项,称为,;堆找指针指向下一个待压人数据的空 位置,称为 O满堆找空堆找ARM处理器寻址方式寻址方式分类堆栈寻址所以可以组合出四种类型的堆找方式::堆找向上增长,堆找指针指向内含有效 数据项的最高地址。指令如LDMFA、STMFA等;:堆筏向上增长,堆找指针指向堆找上的 第一个,空信置。指令如LDMEA、STMEA等;:堆找向下增长,堆找指针指向内含有效 数据项的最低地址。指

6、令如LDMFD、STMFD等;:堆找向下增长,堆找指针向堆找下的第 一个全住置。指令如LDMED、STMED等。ARM处理器寻址方式寻址方式分类块拷贝寻址多寄存器传送指令用于将一块数据从存储器的 某一位置拷贝到另一位置。如:;将区1R7的数据保存到存储器中。;存储指针在保存第一个值之后增加,;增长方向为向上增长。;将区1R7的数据保存到存储器中。;存储指针在保存第一个值之前增加,;增长方向为句上增长。ARM处理器寻址方式寻址方式分类相对寻址相对寻址是基址寻址的一种变通。由程序计数 器PC提供基准地址,指令中的地址码字段作为偏移 量,两者相加后得到的地址即为操作教的有效地址。相对寻址指令举例如下

7、:BL SUBR1;调用到SUBR1子程序BEQ LOOP;条件我&转至!1 LOOP标号处MOVR6f#l目录口 1.ARM处理器寻址方式-ARM指令集 Thumb指令集简单的ARM程序;文件名:;说琴真调试AREA Exampl 1,CODE,READONLY;声明代码段ExampleENTRYMOV R0,#0CODE32ENDADDS RO,RO,RIMOV PC,LR;标识程序入口;声明32位ARM指令;设置参数;调用子程序ADD_SUB;跳转到LOOP;R0=RO+RI;子程序返回;文件结束简单的ARM程序;功能:实现两个寄存器相加;说明:使用ARMulat软件仿真调试AREAEx

8、ampl1,CODE,READONLY;声明代码段Example1ENTRY;标识程序入口CODE32;声明32位ARM指令MOVR0,#0;设置参数MOVRI,#10BLADD_SUB;调用子程序ADD_SUBBLOOP;跳转到LOOPADDSRO,RO,RI;R0=RO+R1MOVPC,LR;子程序返回END;文件结束目录口 1.ARM处理器寻址方式口 2.指令集介绍 Thumb指令集ARM指令小节目录1.指令格式2.条件码3.存储器访问指令4.数据处理指令5.乘法指令6.ARM分支指令7.协处理器指令8.杂项指令9.伪指令ARM指令小节目录2.条件码3.存储器访问指令4.数据处理指令5.

9、乘法指令6.ARM分支指令7.协处理器指令8.杂项指令9.伪指令指令集介绍ARM指令集指令格式ARM指令的基本格式如下:S ,其中 号内的项是必须的,号内的项是可选的。各项的说明如下:指令集介绍ARM指令集第2个操作数ARM指令的基本格式如下:灵活的使用第2个操作教 效率。它有如下的形式:”能够提高代码#immed_8r-常数表达式;Rm-寄存器方式;Rm,shift-寄存器移位方式;指令集介绍ARM指令集第2个操作数#im med_8 r-常数表达式循环右移10枚该常数必须对应8位彳立图,即一个 得到。指令集介绍 ARM指令集第2个操作数#im med_8 r-常数表达式该常数必须对应8位伍

10、图,即一个 得到。例如:MOVRO,R1,R2,AND指令集介绍ARM指令集第2个操作数Rm-寄存器方式在寄存器方式下,操作教即为寄存器的数值。例如:SUB RI,R1,MOV PC,指令集介绍ARM指令集第2个操作数Rm,shift-寄存器移位方式将寄存器的移位结果作为操作教,但Rm值保持不 支,移位方法如下:指令集介绍ARM指令集LSL移核操作:LSR移柱操作:ASR移位操作:ROR移伍操作:RRX移柱操作:第2个操作数HC指令集介绍ARM指令集第2个操作数Rm,shift-寄存器移位方式例如:ADD RI,RI,RI,;R1=R1+R1*8=9R1SUB R1,R1,R2,;R1=R1-

11、(R2/2R3)ARM指令小节目录1.指令格式3.存储器访问指令4.数据处理指令5.乘法指令6.ARM分支指令7.协处理器指令8.杂项指令9.伪指令指令集介绍ARM指令集条件码ARM指令的基本格式如下:使用条件码“”可以实现高效的逐科操作,提 高代码效率。所有的ARM指令都可以条件执行,而Thumb指令 只有B(跳转)指令具有条件执行 功能。如果指令不标 明条件代码,将默认为无条件CALJ执行。指令条件码表指令集介绍ARM指令集条件码示例:C代码:If(a b).对应的汇编代码:;RO与RI比较CMPRO,RI一.a+;ADDRO,RO,#1;ROR1,贝1R0=R0+1ElseADDRI,R

12、I,#1;R01,则RI=Rl+1b+;ARM指令小节目录1.指令格式2.条件码4.数据处理指令5.乘法指令6.ARM分支指令7.协处理器指令8.杂项指令9.伪指令指令集介绍ARM指令集存储器访问指令ARM处理器是典型的RISC处理器,对存储器的 访问只能使用加载和存储指令实现。ARM处理器是 冯诺依曼存储结构,程序空间、RAM空间及I/O映 射空间统一编址,除对RAM操作以外,对外围I。、程序数据的访问均要通过加载/存储指令进行。存储器访问指令分为和 ARM存储器访问指令单寄存器加载 ARM存储器访问指令单寄存器存储LDR/STR指令用于对内存变量的访问、内存缓冲区数据的访问、查表、外围部件

13、的控制操作等。若使用LDR指令加载数据到PC寄存器,则实现程 序跳转功能,这样也就实现了程序散转。所有单寄存器加载/存储指令可分为和 ARM存储器访问指令单寄存器存储LDR和STR-字和无符号字节加载/存储指令LDR指令用于从内存中读取单一字或字节数据 存入寄存器中,STR指令用于将寄存器中的单一字 R字节数据保存到内存。指令格式如下:;将指定地址上的字数据族人Rd 中的字数据存入指定地址;将指定地址上的字节数据读八Rd;将区1中的字节数据存入指定地址 其中,为可选后缀。若指令有T,那么即使处 理器是在特权模式下,存储条统也将访问看成是在 用户模式下进行的。T在用户模式下无效,不能与 前索引偏

14、移一起使用T。ARM存储器访问指令单寄存器存储LDR和STR-字和无符号字节加载/存储指令编码 ARM存储器访问指令单寄存器存储LDR和STR-字和无符号字节加载/存储指令LDR/STR指令寻址非常灵活,它由两部分组成,其中一 部分为一个基址寄存器,可以为任一个通用寄存器;另一部 分为一个地址偏移量。地址偏移量有以下3种格式:O立即数可以是一个无符号的数值。这个数据可以加 到基址寄存器,也可以从基址寄存器中臧去这个数值。如:LDR RI,R0,O寄存器中的数值可以加利基址寄存器,也可以从基 址寄存器中减去这个数值。如:LDR RI,R0,O寄存器移住后的值可以加到基址寄存器,也可以从基址寄存器

15、中减去这个数值。如:LDR RI,R0,ARM存储器访问指令单寄存器存储LDR和STR-字和无符号字节加载/存储指令从寻址方式的地址计算方法分,加载/存储指令有以下4 种格式:O 如:LDR Rd,o 如:LDR Rd,Rn,!o 如:LDR Rd,如:LDR Rd,Rn,:大多数情况下,必须保证字数据操作的地址是32住对O ARM存储器访问指令单寄存器存储LDR和STR-半字和有符号字节加裁/存储指令这类LDR/STR指令可加载有符号半字或字节,可加我/存 储无符号半字。偏移量格式、寻址方式与加莪/存储字和无符 号字节指令相同o;将指定地址上的有符号字节族人Rd;将指定地址上的有符号半字读入

16、Rd;将指定地址上的半字数据读人Rd;将Rd中的半字数据存入指定地址1 有符号柱半字/字节加就是指用符号核加载扩展到32枚,无 符号半字加载是指用零扩畏到32枚;2.半字读写的指定地址必须为偶数,否则将产生不可靠的结果;ARM存储器访问指令单寄存器存储LDR和STR-半字和有符号字节加载/存储指令编码W3128 27 26 25 2123 22 2120 19 16 15 12 11 8 7 664 3 0c ond0 0 0pU1wLRnRdaddr_mode1SH1addr_modeRdRn ARM存储器访问指令单寄存器存储LDR和STR指令应用示例:1,加载/存储字和无符号字节指令;将R

17、5指向地址的字数据存入R2;将R1的数据存储到R0+0 x04地址;将区2指向地址的字节数据存入R3,R2=R2+1;将区7指向地址的字节数据存入R62,加载/存储半字和有符号字节指令;将区0+区3地址上的字节数据存入R1,;嵩24住用符号步展;将区2指向地址的半字数据存入R6,离16位用。广展;读出后,R2=R2+2;将区1的半字数据保存到R0+2地址,;只修改低2字节数据,R0=R0+2 ARM存储器访问指令多寄存器存取多寄存器加载/存储指令可以实现在一组寄存器和一块连续的内存单元 之间传输数据。LDM为加载多个寄存器;STM为存储多个寄存器。允许一 条指令传送16个寄存器的任何子集或所有

18、寄存器。它们主要用于现场保护、数据复制、常教传遍等。ARM存储器访问指令多寄存器存取多寄存器加载/存储指令格式如下::指令执行的条件;:控制地址的增长方式,一共有8种模式;:表示在操作结束后,将最后的地址写回Rn中;:表示寄存器列表,可以包含多个寄存器,它们使用“隔开,如 R1,R2,R6-R9,寄存器由小到大排列;:加入该后缀后,进行数据传送旦寄存器列表不包含PC时,加载/存储 的寄存器是用户模式下的,而不是当前模式的寄存器。若在LDM指令且寄 存器列表中包含有PC时使用,那么除了正常的多*存器传送外,还将SPSR 也拷贝到CPSR中,这可用于异常处理返回。:该后级不允许在用户模 式或系统模

19、式下使用。ARM存储器访问指令多寄存器存取多寄存器加载/存储指令的8种模式如下表所示,右边四种为堆找 操作、左边叨种为数据传送操作。模式说明模式说明每次传送后地址加4满递减堆栈每次传送前地址加4空递减堆栈每次传送后地址减4满递增堆栈每次传送前地址减4空递增堆栈数据块传送操作堆栈操作进行数据复制时,先设置好源数据指针和国标指针,然后使用块 拷贝寻址指令LDM1A/STM1A、LDM1B/STM1B.LDMDA/STMDA.LDMDB/STMDB进行读取和存储。进行堆栈操作操作时,要先设置堆找指针(SP),然后使用堆找 寻址指令 STMFD/LDMFD、STMED/LDMED、STMFA/LDMF

20、A 和 STMEA/LDM E A实现堆找操作。ARM存储器访问指令多寄存器存取操作 过程如右图所示,其 中R1为指令执行前的 基址寄存器,RI则为 指令执行后的基址寄 存器。指令 STM R1!,R5-R7指令 STM R1!,R5-R7指令 STM R1!,R5-R7)指令 STM R1!,R5-R7 ARM存储器访问指令多寄存器存取堆找操作(详见“”)和数据块传送指令类仞,也有4种模式,它们之间的关东如下表所示:存储压栈加载 出栈;使用数据块传送指令进行堆栈操作STMRO!,R5-R6LDMRO!,R5-R6;使用堆栈指令进行堆栈操作STM RO!z R5-R6 LDM RO!,R5-R

21、6两段代码的执行结果是一样的,但是使用堆找指令的压找和出找 操作编程很简单(只要前后一致即可),而使用数据块指令进行压秩 和出找操作则需要考虑空与满、加与减对应的问题。ARM存储器访问指令寄存器和存储器交换指令SWP指令用于将一个内存单元(该单元地址放在寄存器Rn中)的内蓉读 取到一个寄存器Rd中,同时将另一个寄存器Rm的内叁写入到该内存单元 中。使用SWP可实现信号量操作。指令格式如下:其中,为可选后缀,若有B,则交换字节,否则交换32柱字;用于 保存从存储器中读入的数据;的数据用于存储到存储器中,若Rm与Rn 相同,则为寄存器与存储器内叁进行交换;Rn为要进行数据交换的存储器 地址,Rn不

22、能与Rd和Rm相同。ARM存储器访问指令寄存器和存储器交换指令SWP和SWPB寄存器和存储器交换指令编码31 28 27 26 25 24 23 22 21 20 19 16 15 12 11 4 3 0c ond0 0 0 1 0B0 0RnRd0 0 0 0 1 0 0 1RmBSWP指令应用示例:;将R1的内焦与R0指向的存储单元的内缘进行交换;将区0指向的存储单元内的今读职一字节数据到R1中;(离24住请零),并将R2的内家写入到该内存单元中;(最低字节有效)ARM指令小节目录1.指令格式2.条件码3.存储器访问指令5.乘法指令6.ARM分支指令7.协处理器指令8.杂项指令9.伪指令指

23、令集介绍ARM指令集ARM数据处理指令数据处理指令大玫可分为3类:数据处理指令只能对寄存器的内余进行操作,而不能对内存中的数据进行操作。所有ARM数据处 理指令均可选择使用S后缀,并影响状态标志。操作码指令助记符说明0000AND逻辑与操作指令0001EOR逻辑异或操作指令0010SUB减法运算指令0011RSB逆向减法指令0100ADD加法运算指令0101ADC带进位加法0110SBC带进位减法指令0111RSC带进位逆向减法指令1000TST位测试指令1001TEQ相等测试指令1010CMP比较指令1011CMN负数比较指令1100ORR逻辑或操作指令1101MOV数据传送1110BIC位

24、清除指令miMVN数据非传送 ARM数据处理指令数据传送 ARM数据处理指令数据传送MOV Rd,operand2指令将8优图立即教(参看“堡t)或寄存器传送到口标寄存器CRdJ,可用于移优运算等操作。指令格式如下:MOV指令举例如下:;R1=Ox1O;RO=R1;R3=R12,并影响标志住;PC=LR,子程序返回 ARM数据处理指令数据传送MVN Rd,operand2指令将8传图立即教(参看“)或寄存器Coperand2J接柱取反后传送到口标寄存器(Rd厂一因为其具有取反功能,所以可以装载范围更广的立即教。指令格 式如下:MVN指令举例如下:;R1=0 xFFFFFF00;将R2耿反,结果

25、存到R1 ARM数据处理指令算术运算 ARM数据处理指令算术运算助记符 I 说明 I 操作 条件码位置ADD Rd,Rn,operand2加法运算指令ADD到Rd寄存器应例ADDSADD指令格式如下指令将operand2的值与Rn的值相加,结果保存ADDcondSR1,R1,#1R1,R1,R2Rd,Rn,operand2;R1=R1+1,并影响标志住;R1=R1+R2 ARM数据处理指令算术运算助记符 I w I 条件码位置SUB Rd,Rn,operand2减法运算指令 中。指令格式如下应B Su指令用寄存器Rn减去operand2,结果保存到RdSUBcondSRd,Rn,operand

26、2SUBS ROARO,#1SUBS R2,R1,R2;RO=RO-1,并影响标志位;R2=R1-R2,并影响标志位 ARM数据处理指令算术运算助记符 I w I 条件码位置RSB Rd,Rn,operand2逆向减法运算指令 Rd中。指令格式如下B sR指令将。perand2的值减去Rn,结果保存到应RSBcondSRd,Rn,operand2RSB R3ZR1Z#0 xFF00:R3=OxFFOO-R1RSBS R1ZR2ZR2,LSL#2;R1=(R22)-R2=R2X3 ARM数据处理指令算术运算ADC带进柱加法指令将operand2的值与Rn的值相加,再加上CPSR中的C条件标志依,

27、结果保存到Rd寄存器。指令格式如下Rd,Rn,operand2ADCcondADDS R0,R0,R2应用示例(使用ADC实现64位加法,结果存于RI、R0中):ADCR1,R1,R3;R0等于低32位相加,并影响标志住;R1等于高32枚相加,并加上低住进任 ARM数据处理指令算术运算SBC Rd,Rn,operand2 ARM数据处理指令算术运算RSC Rd,Rn,operand2带进核堂句减法指令RSC指令用寄存器operand2臧去Rn,再减去CPSR中的C条件标志柱,,结果保存到Rd中。指令格式如下:RSCcondSRd,Rn,operand2应用示例(使用RSC指令实现求64优数值的

28、负数):RSBS R2,R0,#0R3ZR1,#0RSC ARM数据处理指令逻辑运算指令 ARM数据处理指令逻辑运算指令AND Rd,Rn,operand2义属与操作指令指令将operand2的值与寄存器Rn的值按核作遂转“与操作,结果保存到Rd中。指令格式如下:应用示例:;RO=RO&OxO1,取出最彳氏任数据;R2=R1&R3 ARM数据处理指令逻辑运算指令ORR Rd,Rn,operand2正握 或操作指令-指令将operand2的值与寄存器Rn的值按住作m“或”操作,结果保存到Rd中。指令格式如下:应用示例:将R0的低4,置1使用ORR指令将R2的高8住数据移入到R3低8佳中ORR R

29、O,RO,#OxOFMOV R1ZR2,LSR#24ORR R3ZR1,R3ZLSL#8 ARM数据处理指令逻辑运算指令北流令将。perand2的值与寄存器Rn的值按我近属异或操作指令作近辑“异或”操作,结果保存到Rd中。指令格式如下:EORcondSRd,Rnf operand2应用示例EORRlzRl,#0 x0F的低4枚取反EORR2,R1,RO;R2=RJR0EORSR0zR5,#0 x01;将R5和0 x01进行近属异或,;结果保存到R0,并影响标志优 ARM数据处理指令逻辑运算指令指令将寄存器Rn的值与operand2的值的反吗按位位清除指令作逐辑“与”操作,结果保存到Rd中。指令

30、格式如下BICBICcondSRd,Rnf operand2RlzRlz#0 x0FBIC应用示例BICR1,R2,R3;;R1的低4枚请零,其它核不变;将区3的反吗和R2相遂属“与”,ARM数据处理指令比较指令 ARM数据处理指令比较指令助记符 I 说明 操作 条件码位置CMP Rn,operand2比较指令-CMP指令将寄存器Rn的值减去operand2的值,根据操作的结果更新CPSR中的相应条件标志伉,以便后面的指令根据相应的条件标 志来到断是否轨行。指令格式如下:CMPcondRn,operand2应用示例:CMPRI,#10CMPR1,R2;RI与10比较,设置相关标志住;R1与R2

31、比较,设置相关标志位 ARM数据处理指令比较指令CMP Rn,operand2比较指令指令将寄存器Rn的值减去。perand2的值,根据操作的结果更新CPSR中的相应条件标志伉,以便后面的指令根据相应的条件标 志来判断是否机行。指令格式如下::CMP指令与SUBS指令的区别在于CMP指令不保存运算结果。在进行 两个数据的大小判断时,常用CMP指令及相应的条件码来操作。ARM数据处理指令比较指令CMN Rn,operand2负数比较指令-指令使用寄存器Rn的值加上operand2的值,根据操作的结果更新CPSR中的相应条件标志依,以便后面的指令根据相应 的条件标志来判断是否执行。指令格式如下:应

32、用示例:;R0+1,判断R0是否为1的补码;如果是,则设置Z标志住 ARM数据处理指令比较指令CMN Rn,operand2负数比较指令指令使用寄存器Rn的值加上operand2的值,根据操作的结果更新CPSR中的相应条件标志伉,以使后面的指令根据相应 的条件标志来判断是否执行。指令格式如下::CMN指令与ADDS指令的区别在于CMN指令不保存运算结果。CMN指令可用于负数比较,比如CMN RO,#1指令则表示R0与-1比较,若 R0为-1(即1的补吗),RZ置住;否则Z复住。ARM数据处理指令比较指令TST Rn,operand2测试指令-指令将寄存器Rn的值与operand2的值佳作辑“与

33、”操作,根据操作的结果更新CPSR中的相应条件标志住,以便后面的 指令根据相应的条件标志来判断是否执行。指令格式如下:TSTcondRn,operand2应用示例:TSTRO,#0 x01;判断R0的最低柱是否为0TSTRlz#0 x0F;到断R1的低4枚是否为0 ARM数据处理指令比较指令TST Rn,operand2核测试指令-指令将寄存器Rn的值与operand2的值按核作逻耳“与”操作,根据操作的结果更新CPSR中的相应条件标志伉,以便后面的 指令根据相应的条件标志来判断是否执行。指令格式如下::TST指令与ANDS指令的区别在于TST指令不保存运算结果。TST指令 通常与EQ、NE条

34、件码配合使用,当所有测试住均为0时,EQ有效,而只 要有一个测试住不为0,则NE有效。ARM数据处理指令比较指令TEQ Rn,operand2相等测试指令 指令将寄存器Rn的值与operand2的值接佳作遂 属“异或”操作,根据操作的结果更新CPSR中的相应条件标志依,以便后 面的指令根据相应的条件标志来判断是否执行。指令格式如下:应用示例:;比较区0与R1是否相等(不影响V住和C柱)ARM数据处理指令比较指令TEQ Rn,operand2相等测试指令 指令将寄存器Rn的值与operand2的值接佳作遂 属“异或”操作,根据操作的结果更新CPSR中的相应条件标志依,以便后 面的指令根据相应的条

35、件标志来判断是否执行。指令格式如下::TEQ指令与EORS指令的区别在于TEQ指令不保存运算结果。使用 TEQ进行相等测试时,常与EQ、NE条件码配合使用。当两个数据相等时,EQ有效;否则NE有效。ARM指令小节目录1.指令格式2.条件码3.存储器访问指令4.数据处理指令.6.ARM分支指令7.协处理器指令8.杂项指令9.伪指令指令集介绍ARM指令集乘法指令ARM具有三种乘法指令,分别为:ARM指令乘法指令乘法指令编码Opc odeI Rm31 28 27 24 23 2g 21 20 19 16 15 12 11 8 7 6 5 4 30c ond0 0 0 0opc odeSRd/RdHi

36、Rn/RdLoRs10 0 1RmRn/RdHiI操作码指令助记符说明000MUL32位乘法指令001MLA32位乘加指令100UMULL64位无符号乘法指令101UMLAL64位无符号乘加指令110SMULL64位有符号乘法指令111SMLAL64位启符号乘加指令 ARM才旨令乘法指令 ARM指令乘法指令MUL Rd,Rm,Rs32枚乘法指令 指令将Rm和Rs中的值相乘,结果的低32枚保存到Rd中。指令格式如下:应用示例:;R1=R2XR3;R0=R3 X R7,同时影响CPSR中的N住和2住 ARM指令乘法指令MLA Rd,Rm,Rs,Rn32枚乘加指4-指令将Rm和Rs中的值相乘,再将乘

37、积加上第3个操作教,结果的低32佳保存到Rd中。指令格式如下:应用示例:;R1=R2XR3+RO ARM指令乘法指令UMULL RdLo,RdHi,Rm,Rs64位无符号乘法指令指令将Rm和Rs中的值作无符号数相乘,结果的低32佳保存到RdL。中,而高32佳保存到RdHi中。指令格式如 下:应用示例:;(RL RO)=R5 X R8 ARM指令乘法指令UMLAL RdLo,RdHi,Rm,Rs64枚无符号乘加指令指令将Rm和Rs中的值作无符号数相乘,64住乘积与RdHi、RdL。相加,结果的低32柱保存到RdL。中,而高32 住保存到RdHi中。指令格式如下:应用示例:;(R1、RO)=R5x

38、R8+(Rh RO)ARM指令乘法指令SMULL RdLo,RdHi,Rm,Rs64位有符号乘法指令指令将Rm和Rs中的值作有符号教相乘,结果的低32佳保存到RdL。中,而高32佳保存到RdHi中。指令格式如 下:应用示例:;(R3、R2)=R7XR6 ARM指令乘法指令SMLAL RdLo,RdHi,Rm,Rs64枚有符号乘加指令指令将Rm和Rs中的值作有符号数相乘,64住乘积与RdHi、RdL。相加,结果的低32佳保存到RdL。中,而高32枚保 存到RdHi中。指令格式如下:应用示例:;(R3、R2)=R7XR6+(R3、R2)ARM指令小节目录1.指令格式2.条件码3.存储器访问指令4.

39、数据处理指令5.乘法指令7.协处理器指令8.杂项指令9.伪指令指令集介绍ARM指令集分支指令在ARM中有两种方式可以实现程序的跳转,一 种是使用分支指令直接跳转,另一种则是直接向PC 寄存器腻值实现跳转。分支指令有以下三种:分支指令;带链接的分支指令;带状去切换的分支指令。ARM分支指令指令编码分支指令/指令编码格式31 28 27 4 3 0c ond000100101111111111110001RmRm ARM指令分支指令 ARM指令分支指令B label分文指令 指令,该指令跳转范围F艮制在当前指令的32M字节 地址内(ARM指令为字对齐,最低2住地址固定为0)。指令格式如下:应用示例

40、:;跳转到WA1TA标号处;跳转到绝对地址0 x1234处 ARM指令分支指令BLlabel带链接的分支指令指令适用于子程序调用,使用该指令后,下一条指令的地址被拷贝利R14(即LR)连接寄存器中,然后跳转到指定地址运 行程序。跳转范围F艮制在当前指令的32M字节地址内。指令格式如下:Lab 1Addr 1Addr2BLXXXXXXAddr2Addr2PCLRXXXMOV PC,LR ARM指令分支指令BL label带链接的分文指令 指令适用于子程序调用,使用该指令后,下 一条指令的地址被拷贝利R14(即LR)连接寄存器中,然后跳转到指定地址运 行程序。跳转范围F艮制在当前指令的32M字节地

41、址内。指令格式如下:应用示例:;调用子程序DELAY ARM指令分支指令BX Rm带状走切换的分文指令 指令,该指令可以根据跳转地址(Rm)的最低住来切换处理器状走。其跳转范圉F艮制在当前指令的士32M字节地 址内(ARM指令为字对齐,最低2枚地址固定为0)。指令格式如下:跳转地址Rm0 跳转后CPSR标志T位处理器状态I0。ARMThumb|ARM指令分支指令BX Rm带状走切换的分文指令 指令,该指令可以根据跳转地址(Rm)的最低住来切换处理器状走。其跳转范圉F艮制在当前指令的士32M字节地 址内(ARM指令为字对齐,最低2枚地址固定为0)。指令格式如下:应用示例:;:|$*Thumb程序

42、的八口地址加1存入R0;跳转到R0指定的地址,;并根据R0的最低传来切换处理器状走ARM指令小节目录1.指令格式2.条件码3.存储器访问指令4.数据处理指令5.乘法指令6.ARM分支指令8.杂项指令9.伪指令指令集介绍ARM指令集协处理器指令ARM内核支持协处理器操作,协处理器的控制 要通过协处理器命令实现。ARM内核与协处理器的关系 ARM指令协处理器指令 ARM协处理器指令数据操作指令ARM处理器通过CDP指令通知ARM协处理器执行特定的操作。该操作 由协处理器完成,即对命令的参数的解将与协处理器有关,指令的使用取 决于协处理器。若协处理器不能成功地执行该操作,将产生未定义指令异 常中新。

43、指令格式如下:CDPcondRm,opcod2 ARM协处理器指令数据操作指令ARM处理器通过CDP指令通知ARM协处理器执行特定的操作。该操作 由协处理器完成,即对命令的参数的解将与协处理器有关,指令的使用取 决于协处理器。若协处理器不能成功地执行该操作,将产生未定义指令异 常中新。指令格式如下:应用示例:;对协处理器7操作,操作码为0,;可选操作码为0;对协处理器6操作,操作码为131 28 27 24 23 20 19 16 15 12 11 8 7 4 3c ond 1110 opc odel CRn CRd c p_num opc ode2 CRm ARM协处理器指令数据存取指令协处

44、理器数据存取指令 指令可以将某一连续内存单元的数据 读取到协处理器的寄存器中,或者将协处理器的寄存器数据写入到某一连 续的内存单元中,传送的字数由协处理器来控制。若协处理器不能成功地 执行该操作,将产生未定义指令异常中新。数据读取指令格式数据存储指令格式 ARM协处理器指令数据存取指令协处理器数据存取指令 指令可以将某一连续内存单元的数据 读取到协处理器的寄存器中,或者将协处理器的寄存器数据写入到某一连 续的内存单元中,传送的字数由协处理器来控制。若协处理器不能成功地 机行该操作,将产生未定义指令异常中新。31 28 27 26 25 2t23 22 2|!2。19 16 15 12 11 8

45、 7 Qc oqd 1 1 0 P U N W L Rn_CRd c p_num 9_bit_word_offset ARM协处理器指令数据存取指令协处理器数据存取指令 指令可以将某一连续内存单元的数据 读取到协处理器的寄存器中,或者将协处理器的寄存器数据写入到某一连 续的内存单元中,传送的字数由协处理器来控制。若协处理器不能成功地 执行该操作,将产生未定义指令异常中新。数据操作指令编码31 28 27 26 25 24 23 22 21 2。19 16 15 12 11 8 7 Qc ond 1 1 0 P U N W L Rn CRd c p_num 9_bit_word_offset应用

46、示例:;读取R2+4指向的内存单元的数据,;传送到协处理器p5的C2寄存器中;将协处理器p5的C1寄存器内数据;传送到R0指向的内存单元 ARM协处理器指令寄存器传送指令如果需要在ARM处理器中的寄存器与协处理器中的寄存器之间进行教 据传送,那么可以使用 指令。MCR指令用于将ARM处理器的寄 存器中的数据传送到协处理器的寄存器。MRC指令用于将协处理器的寄存 器中的数据传送到ARM处理器的寄云器中。若协处理器不能成功地执行该 操作,将产生未定义指令异常中断。MCR指令格式(ARM3协处理器)MRC指令格式(协处理器9ARM)ARM协处理器指令寄存器传送指令如果需要在ARM处理器中的寄存器与协

47、处理器中的寄存器之间进行教 据传送,那么可以使用 指令。MCR指令用于将ARM处理器的寄 存器中的数据传送到协处理器的寄存器。MRC指令用于将协处理器的寄存 器中的数据传送到ARM处理器的寄云器中。若协处理器不能成功地执行该 操作,将产生未定义指令异常中断。寄存器传送指令编码31 28 27 24 23 21 20 19 16 15 12 117 5 4 3c ond0 opc?de1 L CnRd _Ic p_num opc ode2 1CRm ARM协处理器指令寄存器传送指令如果需要在ARM处理器中的寄存器与协处理器中的寄存器之间进行教 据传送,那么可以使用 指令。MCR指令用于将ARM处

48、理器的寄 存器中的数据传送到协处理器的寄存器。MRC指令用于将协处理器的寄存 器中的数据传送到ARM处理器的寄云器中。若协处理器不能成功地执行该 操作,将产生未定义指令异常中断。寄存器传送指令编码31 28 27 24 23 21 20 19 16 15 12 11c ond0 opc odel LCRnc p_numopc ode2 1 CRm应用示例:;:|$*ARM中的R7寄存器内衮传遍;利协处理器6的Cl和C2寄存器;将协处理器5的C3和C2寄存器;内衮传造到ARM中的R2寄存器ARM指令小节目录1.指令格式2.条件码3.存储器访问指令4.数据处理指令5.乘法指令6.ARM分支指令7.

49、协处理器指令9.伪指令指令集介绍ARM指令集杂项指令ARM指令集中有三条指令作为杂项指令,实际 上这三条指令非常重要。它们如下所示:ARM杂项指令软中断指令指令用于产生软中新,从而,并且将CPSR保存到管理模式的SPSR中,然后程序跳转到SW1异常人口。在其 它模式下也可使用SW1指令,处理器同样地切换到管理模式。该指令主要用于用户程序调用操作系统的系统服务,操作余统在SW1 异常处理程序中进行相应的宗统服务。SW1指令格式SW1指令编吗c ond ARM杂项指令软中断指令根据SW1指令传遹的参数SW1异常处理程序可以作出相应的处理。SW1 指令传遍参数有以下两种方法,指令中的24位立即教指定

50、了用户请求的服务类型,参数通过通用寄存 器传遹O;设置子功能号为34;调用12号软中新指令中的24枚立即教被忽嗪,用户请求的服务类型由寄存器R0的值 决定,参数通过其它的通用寄存器传遍。;调用12号软中新;设置于功能号为34 ARM杂项指令软中断指令在SW1异常中新处理程序中,取出SW1指令中立即教的步骤为:首先确定引起软中新的SW1指令是ARM指令还是Thu m b指令,过对SPSR访问得到;这可通然后取得该SW1指令的地址,这可通过访问LR寄存器得到;接着读出该SW1指令,分解出立即教。SWI Handler1STMFDSP!,R0-R3,R12,LR现场保护MRSR0,SPSRr读取SP

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

关于我们      便捷服务       自信AI       AI导航        获赠5币

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

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

gongan.png浙公网安备33021202000488号   

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

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服