- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ARM体系结构及指令集
LDM/STM批量加载/存储指令可以实现在一组寄存器及一块连续的内存单元之间传输数据。LDM为加载多个寄存器,STM为存储多个寄存器。允许一条指令传送16个寄存器的任何子集或所有寄存器。指令格式如下: LDM{cond}模式 Rn{!},regist{?} STM{cond}模式 Rn{!},regist{?} 2.8.3.3 数据传送指令应用 表2-16 多寄存器的Load/Store内存访问指令映射 向 上 生 长 向 下 生 长 满 空 满 空 增加 之前 STMIB LDMIB STMFA LDMED 之后 STMIA LDMIA STMEA LDMFD 增加 之前 LDMDB STMDB LDMEA STMFD 之后 LDMDA STMDA LDMFA STMED 交换指令是Load/Store指令的一种特例,它把一个寄存器单元的内容与寄存器内容交换。交换指令是一个原子操作(Atomic Operation),也就是说,在连续的总线操作中读/写一个存储单元,在操作期间阻止其他任何指令对该存储单元的读/写。 交换指令如表2-17所示。 2.8.4 单数据交换指令 表2-17 交换指令SWP 指 令 作 用 操 作 SWP 字交换 tmp=men32[Rn] mem32[Rn]=Rm Rd=tmp SWPB 字节交换 tmp=men8[Rn] mem8[Rn]=Rm Rd=tmp SWP指令用于将内存中的一个字单元及一个指定寄存器的值相交换。 指令的语法格式: SWP{cond} Rd,Rm,[Rn] 1.SWP字交换指令 SWPB指令用于将内存中的一个字节单元及一个指定寄存器的低8位值相交换, 指令的语法格式: SWP{cond}B Rd,Rm,[Rn] 2.SWPB字节交换指令 SWP指令用于将一个内存单元(该单元地址放在寄存器Rn中)的内容读取到一个寄存器Rd中,同时将另一个寄存器Rm的内容写到该内存单元中,使用SWP可实现信号量操作。 指令的语法格式: SWP{cond}B Rd,Rm,[Rn] 3.交换指令SWP应用 跳转(B)及跳转连接(BL)指令是改变指令执行顺序的标准方式。 2.8.5 跳转指令 表2-18 ARMv5架构跳转指令 助记符 说 明 操 作 B 跳转指令 pc←label BL 带返回的连接跳转 pc←label(lr←BL后面的第一条指令) BX 跳转并切换状态 pc←Rm0xfffffffe, T←Rm1 BLX 带返回的跳转并切换状态 pc←lable, T←1 pc←Rm0xfffffffe, T←Rm1 lr←BL后面的第一条指令 (1)指令的语法格式 B{L}{cond} target_address (2)程序举例 1.跳转指令B及带连接的跳转指令BL 带状态切换的跳转指令(BX)使程序跳转到指令中指定的参数Rm指定的地址执行程序,Rm的第0位复制到CPSR中T位,bit[31∶1]移入PC。若Rm的bit[0]为1,则跳转时自动将CPSR中的标志位T置位,即把目标地址的代码解释为Thumb代码;若Rm的位bit[0]为0,则跳转时自动将CPSR中的标志位T复位,即把目标地址代码解释为ARM代码。 2.BX带状态切换的跳转指令BX (1)指令的语法格式 BX{cond} Rm (2)指令举例 带连接及状态切换的跳转指令(Branch with Link Exchange,BLX)使用标号,用于使程序跳转到Thumb状态或从Thumb状态返回。 (1)语法格式 BLX target_add (2)指令的使用 3.BLX带状态切换的连接跳转指令BLX ARM指令集提供了两条指令,可直接控制程序状态寄存器(Program State Register,PSR)。 2.8.6 状态操作指令 表2-19 程序状态寄存器指令 指令 作 用 操 作 MRS 把程序状态寄存器的值送到一个通用寄存器 Rd=SPR MSR 把通用寄存器的值送到程序状态寄存器或把一个立即数送到程序状态字 PSR[field]=Rm或PSR[field]=immediate MRS指令用于将程序状态寄存器的内容传送到通用寄存器中。 在ARM处理器中,只有MRS指令可以将状态寄存器CPSR或SPSR读出到通用寄存器中。 (1)指令的语法格式 MRS{cond} Rd,PSR (2)指令举例 1.MRS 在ARM处理器中,只有MSR指
文档评论(0)