- 1、本文档共40页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ARM及Thumb指令集 课程安排 ARM指令集 Thumb指令集 v5TE体系结构扩展 ARM指令编码格式 说明 Cond 指令执行的条件编码 Opcode 指令操作符编码 S 决定指令的操作是否影响CPSR的值 Rd 操作目标寄存器编码 Rn 包含第一操作数的寄存器编码 Shifter_operand 表示第二操作数 条件执行及标志位 ARM指令可以通过添加适当的条件码后缀来达到条件执行的目的。 这样可以提高代码密度,减少分支跳转指令数目,提高性能。 CMP r3,#0 CMP r3,#0 BEQ skip ADDNE r0,r1,r2 ADD r0,r1,r2skip 默认情况下,数据处理指令不影响条件码标志位,但可以选择通过添加“S”来影响标志位。 CMP不需要增加 “S”就可改变相应的标志位。 loop … SUBS r1,r1,#1 BNE loop Condition Codes 下表为所有可能的条件码: 注意:AL为默认状态,不需要单独指出 条件执行示例 一系列的指令都使用条件指令 if (a==0) func(1); CMP r0,#0MOVEQ r0,#1BLEQ func 置标志位,再使用不同的条件码 if (a==0) x=0;if (a0) x=1; CMP r0,#0MOVEQ r1,#0MOVGT r1,#1 使用条件比较指令 if (a==4 || a==10) x=0; CMP r0,#4CMPNE r0,#10MOVEQ r1,#0 分支指令 Branch : B{cond} label Branch with Link : BL{cond} subroutine_label 处理器把偏移量左移两位,进行符号扩展后再与PC相加 跳转范围:± 32 Mbyte 如何执行长跳转? 数据处理指令 包括: 算术指令: ADD ADC SUB SBC RSB RSC 逻辑指令: AND ORR EOR BIC 比较指令: CMP CMN TST TEQ 数据搬移: MOV MVN 上述指令只能对寄存器操作,不能针对存储器。 语法: 操作{cond}{S} Rd, Rn, Operand2 只有比较指令影响标志位 -不指定Rd 数据搬移不指定Rn 第二个操作数通过桶型移位器送到ALU中。 桶型移位器 桶型移位器:第二个操作数 寄存器, 可选择是否增加移位操作. 移位值可以是: 5 bit 无符号整数 放在另一个寄存器的低字节 用于常数乘法 立即数 8 bit ,大小范围0-255。 右移偶数位 允许直接加载32-bit 常数到寄存器中。 立即数 (1) 没有任何一条ARM 指令可包括一个32 bit的立即数 所有的ARM指令都是32 bits固定长度 数据处理指令格式中,第二个操作数有12位 4 bit 移位值 (0-15)乘于2,得到一个范围在0-30,步长为 2的移位值。 记住一条准则: “最后8位一定要移动偶数位”. 立即数 (2) Examples: 下列命令中,汇编器把立即数转换为移位操作: MOV r0,#4096 ; uses 0x40 ror 26 ADD r1,r2,#0xFF0000 ; uses 0xFF ror 16 也可使用 MVN来进行位反转: MOV r0, #0xFFFFFFFF ; assembles to MVN r0,#0 使用无法用上述方法生成的数据,将产生错误 。 装载32 bit常数 为允许装载大常数,汇编器提供了一条伪指令: LDR rd, =const 它可能汇编成下列指令: MOV or MVN。 或 LDR 指令,从数据池(Literal pools)读取常数。 For example LDR r0,=0xFF = MOV r0,#0xFF LDR r0,=0= LDR r0,[PC,#Imm12] … … DCD 0推荐使用这种方法把常数装入寄存器 。 Quiz #1 1. 写一条 ARM 指令,分别完成下列操作: a) r0 = 16 b) r0 = r1 / 16 (带符号的数字) c) r1 = r2 * 3 d) r0 = -r0 2. 下面哪些立即数是数据处理指令中有效的数据?
您可能关注的文档
最近下载
- 神经源性膀胱评估和治疗方法.pptx VIP
- 万达广场购物中心商业氛围店铺一店一色设计必看指南.pdf VIP
- 2015届高考文综浙江省教育考试院测试样卷.doc VIP
- 马步冲拳(教案)-2021-2022学年体育一年级下册.docx
- 《压力管道元件制造许可规则》 压力管道元件制造许可规则.doc
- 非煤矿矿山企业基本情况登记表企业名称.doc VIP
- R410A安全技术说明书MSDS-china.PDF
- 人教A版高中数学必修第二册精品课件 第7章 复数 7.2.2 复数的乘、除运算.ppt VIP
- 2024年福建统招专升本《政治》知识考点汇总.pdf
- 新译林版英语八年级上册期中选择题精选含答案.doc VIP
文档评论(0)