ARM体系结构与结构---第三章技巧.ppt

  1. 1、本文档共159页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 ARM指令系统 ARM指令集——跳转(分支)指令 3.2 指令集介绍 ARM指令集——ARM数据处理指令 3.2 指令集介绍 ARM指令集——ARM数据处理指令 3.2 指令集介绍 ARM指令集——ARM数据处理指令 3.2 指令集介绍 ARM指令集——ARM数据处理指令 ARM指令集——乘法指令 杂类的算术指令 ARM V5及以上版本有一条指令CLZ (count left zeros) 该指令用于计算最高位与第一个“1”之间的“0”的个数。 用于以下两种场合: 1、使操作数规范化(使其最高为1)时,计算需要左移的位数。 2、确定优先级掩码中的最高位 CLZ R1,R2;把R2中第一个“1”前面的“0”的个数放入R1 MOV R2,R2,LSL R1;把R2左移R1位,使R2的bit[31]=1 1.6 程序状态寄存器 简介 1.6 程序状态寄存器 简介 程序状态寄存器访问指令(MRS/MSR) 读CPSR可以了解当前处理器(无论出于何种模式下)的工作状态,。 读SPSR寄存器可以了解进入异常前的处理器状态CPSR。 以上两条可以通过,MRS指令把cpsr/spsr读入通用寄存器(r0-r15)。 对CPSR或SPSR寄存器的写操作,可以切换处理器模式、或者允许/禁止IRQ/FIQ中断等。 上面一条可以通过,MSR指令把通用寄存器(r0-r15)或立即数的值,写入cpsr/spsr。 注意:不能通过写状态寄存器来改变处理器的状态(ARM态/Thumb态),只能通过带状态切换的分支指令BX 来改变。 ARM指令集——存储器访问指令 Load指令用于从存储器(包括内存和外存)中读取数据放入寄存器中。 LDR R1, [R2,R5]! ;R1 ? [R2+R5] , R2←R2+R5, ;R2+R5的内容为地址, [R2+R5] 为该地址处的数据 Store指令用于将寄存器的数据保存到存储器。 STR R1, [R2,R5]! ;R1 ?[R2+R5] , R2←R2+R5 ;R2+R5的内容为地址, [R2+R5] 为该地址处的数据 各种类型的Load/Store指令的寻址方式由两部分组成: 1〉基址寄存器:一般使用通用寄存器 2〉地址偏移量:立即数、寄存器、寄存器及一个移位常数 需要的地址=基址寄存器+地址偏移量 偏移量的形式如下页: 用于将存储器中的一个字节或半字数据传送到寄存器。常用的加载指令如下: LDRB 字节数据加载指令 LDRH 半字数据加载指令 LDRSB 有符号字节数据加载指令 LDRSH 有符号半字数据加载指令 Byte Half Sign 用于将寄存器中的一个字节或半字数据传送到存储器。常用的存储指令如下 STRB 字节数据存储指令 STRH 半字数据存储指令 STRB R5 , [SP,R3] ;R5的最低字节→ [SP+R3] STRH R5 , [SP,R3] ;R5的最低半字→ [SP+R3] LDRT、STRT、STRBT 带后缀T,表示在特权模式(除用户模式外)下使用这类指令时,将视为一般的用户模式下的操作(权限降低),操作的为用户模式下的寄存器。 LDM(1)例 LDMIA R0!,{R5-R8}; 错误的例子: LDMIA R0!,{R0,R5-R8} ;错误,在基址寄存器需要更新时,寄存器列表中不应含有基址寄存器 LDMDB R4!,{R0,R1,R2,R3} ;错误,应使用省略R0-R3 STMIB R15!,{R1-R3} ;错误,R15作为基址寄存器将产生不可预知的结果。 SWP/SWPB指令举例: SWP R1,R2,[R3] ;将内存单元[R3]中的字数据读取到R1寄存器中,同时将R2寄存器的内容放入[R3] SWP R1,R1,[R2] ;将R1寄存器内容和内存单元[R2]的内容互换 SWPB R1,R2,[R3] ;将[R3]中的字节放入R1,R1的高24位设置为0,同时将R2的最低字节放入[R3] 3.2 指令集介绍 ARM指令集——异常中断产生指令 断点中断指令:BKPT(Break Point) 用于产生软件中断V5或V5版本以上才支持该指令,在指令代码中插入该指令,可以用于调试中设置断点。 协处理器 Coprocessor 协处理器是专门用于进行辅助运算的芯片,其本身除了运算功能外没有其他功能(CP15除外),因此不能单独工作,必须和CPU一起工作。协处理器可以在片外连接,但在一些运算功能强大的微处理器也有内置

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档