- 1、本文档共129页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统软件开发 -- ARM指令集
ARM指令集 目录 ARM指令集 概述 指令寻址方式 数据处理指令 程序状态访问指令 跳转指令 单数据访存指令 多数据访存指令 其它指令 Thumb指令集 目录 ARM指令集 概述 指令寻址方式 数据处理指令 程序状态访问指令 跳转指令 单数据访存指令 多数据访存指令 其它指令 Thumb指令集 1 指令分类 ARM指令集总体分为6类指令 数据处理指令:数据传输指令,算术指令,逻辑指令,比较指令,乘法指令,前导零计数。 程序状态访问指令:mrs和msr。 跳转指令:b和bl。 访存指令:单数据访存指令,多数据访存指令,信号量操作指令。 异常中断产生指令:swi和bkpt。 协处理器指令。 2 指令特点 所有指令都是32bit。 大多数指令都在单周期内完成。 所有指令都可以条件执行。 load/store体系结构。 指令集可以通过协处理器扩展 3 ARM指令的格式 Opcode{cond}{s} Rd, Rn, Operand2 Cond:指令的条件码。 Opcode:指令操作码。 S:操作是否影响cpsr。 Rn:包含第一个操作数的寄存器编码。 Rd:目标寄存器编码。 Operand2:第2操作数。 3 ARM指令的格式(续) 4 ARM指令的条件执行 4.1 ARM指令的条件域 EQ/NE: 等于/不等于(equal / not equal) HS/LO: 无符号数高于或等于/无符号数小于(higher or same/lower) HI/LS: 无符号数高于/无符号数低于或等于(higher/lower or same) GE/LT: 有符号数大于或等于/有符号数小于(greater or equal / less than) GT/LE: 有符号数大于/有符号数小于或等于(greater than / less or equal) MI/PL: 负/非负 VS/VC: 溢出/不溢出(overflow set / overflow clear) CS/CC: 进位/无进位(carry set / carry clear) 4.2 ARM指令的条件码 4.2 ARM指令的条件码(续) 目录 ARM指令集 概述 指令寻址方式 数据处理指令 程序状态访问指令 跳转指令 单数据访存指令 多数据访存指令 其它指令 Thumb指令集 寄存器移位寻址 逻辑移位 LSL:逻辑左移(Logical Shift Left)。寄存器中字的低端空出的位补0。 ·LSR:逻辑右移(Logical Shift Right)。寄存器中字的高端空出的位补0。 ·ASR:算术右移(Arithmetic Shift Right)。算术移位的对象是带符号数,在移位过程中必须保持操作数的符号不变。若源操作数为正数,则字的高端空出的位补0。若源操作数为负数,则字的高端空出的位补1。 ·ROR:循环右移(Rotate Right)。从字的最低端移出的位填入字的高端空出的位。 ·RRX:扩展为1的循环右移(Rotate Right Extended by 1 place)。操作数右移一位,空位(位[31])用原C标志填充。 移位操作 在任何数据处理指令中,第二寄存器操作数可以有应用该操作数的移位操作. 逻辑移位 LSL:逻辑左移字的最小位空位清零 LSR:逻辑右移字的最大位空位清零. 移位操作 算术移位 ASR: 正数的ASR= LSR 循环移位: ROR, RRX 变址寻址 变址寻址用于访问基址附近的存储单元,包括: 基址加偏移 基址加索引寻址。 寄存器间接寻址是偏移量为0的基址加偏移寻址。 基址加偏移寻址中的基址寄存器包含地址,需加(或减)(最大4 KB)的偏移来计算访问的地址。 LDR R0,[R1,#4] ; R0 =[R1+4] 这是前索引寻址方式。 带自动索引的前索引寻址。 LDR R0,[R1,#4]! ; R0= [R1+4] ; R1 =R1+4 “!”符号表明指令在完成数据传送后应该更新基址寄存器 后索引寻址。基址不带偏移作为传送的地址,传送后自动索引。 LDR R0,[R1],#4 ; R0= [R1] ; R1= R1+4 基址加索引寻址有时指令指定一个基址寄存器,再指定另一个寄存器(索引),其值作为偏移加到基址上形成存储器地址。例如指令: LDR R0,[R1,R2] ; R0= [R1+R2] 块拷贝寻址 ARM支持两种不同角度的块寻址机制,两者都映射到相同的基本指令——多寄存器传送指令。多寄存器传送指令可以用于把一块数据从存储器的某一位置拷贝到另一位置;基于数据是存储在基址寄存器的地址之
您可能关注的文档
最近下载
- 2025年湖南省长沙市中考物理试卷及答案解析 .pdf VIP
- 《给水排水设施施工及验收手册》GB50268-2023.pdf VIP
- 2024年“民用无人机及多旋翼无人机”驾驶员操控员技能与理论知识考试题库含答案.docx
- 2025年湖南省长沙市中考英语试卷及答案解析 .pdf VIP
- 第十五届全国交通运输行业“极智杯”公路收费及监控员职业技能大赛理论题库.pdf VIP
- word格式电子版个人简历模板.docx
- 重难点专题39 齐次化妙解圆锥曲线九大题型汇总(解析版).docx VIP
- 数学建模论文(副标题:摩天轮高度与时间的关系).doc
- 徐州市中医院 中医推拿保健 颈椎病诊断与治疗-人体解剖.pptx VIP
- 水肥一体化灌溉系统应用技术规程.pdf VIP
文档评论(0)