- 1、本文档共102页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 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寄存器,则实现程序跳转功能,这样也就实现了程序散转。 ①
您可能关注的文档
- 嵌入式Linux C语言程序设计基础教程 教学课件 作者 华清远见嵌入式学院 冯利美 冯建 第1章 嵌入式Linux C语言开发工具.ppt
- 嵌入式Linux C语言程序设计基础教程 教学课件 作者 华清远见嵌入式学院 冯利美 冯建 第2章 数据.ppt
- 嵌入式Linux C语言程序设计基础教程 教学课件 作者 华清远见嵌入式学院 冯利美 冯建 第3章 数据的输入输出.ppt
- 嵌入式Linux C语言程序设计基础教程 教学课件 作者 华清远见嵌入式学院 冯利美 冯建 第4章 运算符和表达式.ppt
- 嵌入式Linux C语言程序设计基础教程 教学课件 作者 华清远见嵌入式学院 冯利美 冯建 第5章 程序结构和控制语句.ppt
- 嵌入式Linux C语言程序设计基础教程 教学课件 作者 华清远见嵌入式学院 冯利美 冯建 第6章 数组.ppt
- 嵌入式Linux C语言程序设计基础教程 教学课件 作者 华清远见嵌入式学院 冯利美 冯建 第7章 指针.ppt
- 嵌入式Linux C语言程序设计基础教程 教学课件 作者 华清远见嵌入式学院 冯利美 冯建 第8章 函数.ppt
- 嵌入式Linux C语言程序设计基础教程 教学课件 作者 华清远见嵌入式学院 冯利美 冯建 第9章 用户自定义数据类型.ppt
- 嵌入式Linux C语言程序设计基础教程 教学课件 作者 华清远见嵌入式学院 冯利美 冯建 第10章 嵌入式C语言的高级用法.ppt
- 剧本杀行业报告:内容创作规范与剧本市场拓展策略.docx
- 剧本杀行业区域市场区域文化特色与市场潜力分析报告.docx
- 剧本杀行业区域市场拓展实战案例研究.docx
- 剧本杀行业区域市场拓展路径与模式探索报告.docx
- 剧本杀行业区域市场竞争态势与品牌差异化策略研究报告.docx
- 剧本杀行业2025年西北区域市场市场细分领域竞争态势与品牌竞争策略分析研究报告.docx
- 剧本杀行业2025年西北市场拓展前景预测报告.docx
- 剧本杀行业2025年长沙市场发展潜力分析报告.docx
- 剧本杀行业2025年长三角市场竞争策略与布局分析.docx
- 医疗行业数据合规:2025年数据安全法实施后的合规监管挑战与应对.docx
文档评论(0)