网站大量收购独家精品文档,联系QQ:2885784924

(嵌入式系统技术与设计)第2章ARM体系结构与指令集1.ppt

(嵌入式系统技术与设计)第2章ARM体系结构与指令集1.ppt

  1. 1、本文档共102页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 2.8.2 乘法指令 4.UMLAL指令:UMLAL(Unsigned Multiply Accumulate Long)为64位无符号长乘—累加指令。指令将Rm和Rs中的值做无符号数相乘,64位乘积与RdHi、RdLo相加,结果的低32位保存到RsLo中,高32位保存到RdHi中。 (1)指令的语法格式 UMALL{cond}{S} RdLo,RdHi,Rm,Rs (2)指令举例 下面的指令完成(R1,R0) = R5 × R8+(R1,R0)操作。 UMLAL R0, R1, R5,R8; 2.8 ARM处理器的指令集 * 2.8.2 乘法指令 5.SMULL指令:SMULL(Signed Multiply Long)为64位有符号长乘法指令。指令将Rm和Rs中的值做有符号数相乘,结果的低32位保存到RsLo中,高32位保存到RdHi中。 (1)指令的语法格式 SMULL{cond}{S} RdLo,RdHi,Rm,Rs (2)指令举例 下面的指令完成(R3,R2) = R7 × R6操作。 SMULL R2, R3, R7,R6; 2.8 ARM处理器的指令集 * 2.8.2 乘法指令 6.SMLAL指令:SMLAL(Signed Multiply Accumulate Long)为64位有符号长乘—累加指令。指令将Rm和Rs中的值做有符号数相乘,64位乘积与RdHi、RdLo相加,结果的低32位保存到RsLo中,高32位保存到RdHi中。 (1)指令的语法格式 SMLAL{cond}{S} RdLo,RdHi,Rm,Rs (2)指令举例 下面的指令完成(R3,R2) = R7 × R6 +(R3,R2)操作。 SMLAL R2, R3, R7,R6; 2.8 ARM处理器的指令集 * 2.8.3 Load/Store指令 Load/Store内存访问指令在ARM寄存器和存储器之间传送数据。ARM指令中有3种基本的数据传送指令。 1.单寄存器Load/Store指令(Single Register) 这些指令在ARM寄存器和存储器之间提供更灵活的单数据项传送方式。数据项可以是字节、16位半字或32位字。 2.多寄存器Load/Store内存访问指令 这些指令的灵活性比单寄存器传送指令差,但可以使大量的数据更有效地传送。它们用于进程的进入和退出、保存和恢复工作寄存器以及复制存储器中的一块数据。 3.单寄存器交换指令(Single Register Swap) 这些指令允许寄存器和存储器中的数值进行交换,在一条指令中有效地完成Load/Store操作。它们在用户级编程中很少用到。它的主要用途是在多处理器系统中实现信号量(Semaphores)的操作,以保证不会同时访问公用的数据结构。 2.8 ARM处理器的指令集 * 2.8.3 Load/Store指令 单寄存器的Load/Store指令 用于把单一的数据传入或者传出一个寄存器。支持的数据类型有字节(8位)、半字(16位)和字(32位)。 单寄存器Load/Store指令 2.8 ARM处理器的指令集 * 2.8.3 Load/Store指令 单寄存器的Load/Store指令 1.LDR指令:用于从内存中将一个32位的字读取到目标寄存器 (1)指令的语法格式 LDR{cond} Rd,addr_mode (2)指令举例 LDR R1,[R0,#0x12] ;将R0+12地址处的数据读出,保存到R1中(R0的值不变) LDR R1,[R0] ;将R0地址处的数据读出,保存到R1中(零偏移) LDR R1,[R0,R2] ;将R0+R2地址的数据读出,保存到R1中(R0的值不变) LDR R1,[R0,R2,LSL #2] ;将R0+R2×4地址处的数据读出,保存到R1中(R0、R2的值不变) LDR Rd,label ;label为程序标号,label必须是当前指令的-4~4KB范围内 LDR Rd,[Rn],#0x04 ;Rn的值用作传输数据的存储地址。在数据传送后,将偏移量0x04与Rn相加,结果写回到Rn中。Rn不允许是R15 2.8 ARM处理器的指令集 * 2.8.3 Load/Store指令 单寄存器的Load/Store指令 2.STR指令:用于将一个32位的字数据写入到指令中指定的内存单元 (1)指令的语法格式 STR{cond} Rd,addr_mode (2)指令举例 LDR/STR指令用于对内存变量的访问、内存缓冲区数据的访问、查表、外围部件的控制操作等,若使用LDR指令加载数据到PC寄存器,则实现程序跳转功能,这样也就实现了程序散转。 ①

文档评论(0)

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

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

1亿VIP精品文档

相关文档