-ARM指令集报告.ppt

  1. 1、本文档共85页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
判断 0X3FF 0X3FC STMFD SP!,{R1-R7,LR} LDMFA SP!,{R1-R7,LR} * * MUL和MLA(乘法和乘加) 句法: MUL {cond} {S} Rd,Rm,Rs MLA {cond} {S} Rd,Rm,Rs,Rn R15不能用作Rd、Rm、Rs、Rn。Rn不能与Rm相同。 条件标志码: 若指定S,则: 1)根据结果更新标志N和Z 2)不影响标志V 3)在ARM4v及以前版本中C不可靠 4)在ARM5v及以后版本中不影响标志C * * 例子: MUL R10,R2,R5 MLA R10,R2,R1,R5 MULS R0,R2,R2 错例: MUL R15,R1,R3 * * UMULL、UMLAL、SMULL、SMLAL (无符号和带符号长整数乘法和乘加,结果为64位) 句法: Op {cond} {S} RdLo,RdHi,Rm,Rs 其中:RdLo,RdHi:ARM结果寄存器。对于UMLAL和SMLAL,用于保存加法值 Rm,Rs:操作数寄存器 * * SMULxy、SMLAxy、SMULWy、SMLAWy、SMLALxy SMULxy(带符号乘法 16位×16位,结果为32位) 句法: SMUL xy {cond} Rd,Rm,Rs 其中:x :B或T,B意味着使用Rm的低端[15:0] T意味着使用高端[31:16] y : B或T,B意味着使用Rs的低端[15:0] T意味着使用高端[31:16] Rd :结果寄存器 Rm,Rs :乘数寄存器 SMLAxy(带符号乘加 16位×16位,加法为32位) * * SMULWy(带符号乘 32位×16位,结果为32位) 句法: SMULWy {cond} Rd,Rm,Rs SMLAWy(带符号乘加 32位×16位,加法为32位) 句法: SMLAWy {cond} Rd,Rm,Rs SMLALLxy (带符号加 16位× 16位 加法为64位) 句法: SMLALLxy {cond} RdLo,RdHi,Rm,Rs * * 3.3.2 Load/Store指令 ARM的数据存取指令Load/Store是唯一用于寄存器和存储器之间进行数据传送的指令。ARM指令集中有三种基本的数据存取指令: 单寄存器的存取指令(LDR,STR) 多寄存器存取指令(LDM,STM) 单寄存器交换指令(SWP) * * 单寄存器的存取指令 单寄存器存取指令是ARM在寄存器和存储器间传送单个字节和字的最灵活方式。根据传送数据的类型不同,单个寄存器存取指令又可以分为以下两类: 单字和无符号字节的数据传送指令 半字和有符号字节的数据传送指令 * * 单字和无符号字节的数据传送指令 这一类数据传送指令的编码格式如下: 单字和无符号字节数据传送指令的二进制编码 * * 单字和无符号字节的数据传送指令 这一类数据传送指令的汇编格式如下: 前变址格式 LDR|STR {cond} {B} Rd, [Rn, offset] {!} 后变址格式 LDR|STR {cond} {B} {T} Rd, [Rn],offset 相对PC的形式 LDR|STR {cond} {B} Rd, LABEL T:特权模式下使用,在用户模式下不可用。存储系统看 成是用户模式下的状态,不能和前索引偏移一起使用 * * 半字和有符号字节的数据传送指令 这一类数据传送格式的二进制编码如下: * * 半字和有符号字节的数据传送指令 这一类数据传送指令的汇编格式如下: 前变址格式 LDR|STR{ cond} H|SH|SB Rd, [Rn, offest]{!} 后变址格式 LDR|STR {cond} H|SH|SB Rd, [Rn], offest 式中offset是#±8位立即数或#±Rm;H|SH|SB选择传送数据类型;其它部分的汇编器格式与传送字和无符号字节相同。 * * 第二操作数移位方式 LSL:逻辑左移,空出的最低有效位用0填充。 LSR:逻辑右移,空出的最高有效位用0填充。 ASL:算术左移,由于左移空出的有效位用0填充,因此 它与LSL同义。 ASR:算术右移,算术移位的对象是带符号数,移位过程中必须保持操作数的符号不变。如果源操作数是正数,空出的最高有效位用0填充,如果是负数用1填充。 ROR:循环右移,移出的字的最低有效位依次填入空出的最高有效位。 RRX:带扩展的循环右移。将寄存器的内容循环右移1位,空位用原来C标志

文档评论(0)

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

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

1亿VIP精品文档

相关文档