- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 ARM微处理器指令集(精简)20111021
3.3 ARM处理器的指令系统 主要内容 3.3.1 ARM指令系统概述 3.3.2 ARM寻址方式 3.3.3 ARM指令集 3.3.4 Thumb指令集 3.3.5 ARM伪操作、伪指令与宏指令 3.3.6 ARM汇编语言程序设计 3.3.1 ARM指令系统概述 一、指令系统概念 指令:是规定计算机进行某种操作的命令。 指令系统:计算机能够执行的各种指令的集合。 二、ARM指令的特点 所有指令都是32位的。 大多数指令都在单周期内完成。 所有指令都可以条件执行。 ARM指令为load/store类型。 基本指令仅36条,分成六类。 有7种寻址方式。 指令集可以通过协处理器扩展。 ARM指令是加载/存储(Load/Store)型: 也即指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载/存储指令来完成。 [ARM指令集是load/store结构:对存储器中的数据只能使用load/store指令进行存取,所有其他操作只能在寄存器中完成,即只能对存放在寄存器的数据进行处理。] ARM指令可以分为六大类: 数据处理指令、存储器访问Load/Store指令、程序状态寄存器处理指令、跳转指令、协处理器指令、异常产生指令。 ARM指令有7种寻址方式: 立即寻址、寄存器寻址、寄存器间接寻址、基址寻址、堆栈寻址 、块拷贝寻址、相对寻址。 简单的ARM程序 三、ARM指令的格式 ARM指令基本的语法格式为: Opcode {cond}{s} Rd, Rn {, Operand2} Opcode:指令操作码。 cond:指令的条件码。 S:决定指令的操作是否影响cpsr的值。 Rd:目标寄存器编码。 Rn:包含第一个操作数的寄存器编码。 Operand2:第2操作数。 ARM指令典型的编码格式为:每条ARM指令占有4个字节,其指令长度为32位。 四、指令的条件码 条件码的位数和位置:每条ARM指令包含4位条件码域cond,它占用指令编码的最高四位[31:28]。 条件码的表示:条件编码共 24 =16 种,其中,15种用于指令的条件码。每种条件码用2个英文缩写字符表示。(见下表) 带条件指令的执行:ARM处理器根据指令的执行条件是否满足,决定当前指令是否执行。 只有在CPSR中的条件标志位满足指定的条件时,指令才会被执行。不符合条件的代码依然占用一个时钟周期(相当于一个NOP指令)。 条件码的书写方法:条件码的位置在指令助记符的后面(因此也称为条件后缀)。 例如: MOVEQ R0, R1 ARM指令条件码表 条件码标志 任何数据处理指令都可以设置条件码 (N, Z, V, and C) 适用于除比较操作外的所有数据处理指令 特殊的请求必须在汇编语言中实现,这种请求是通过把”S”增加到选择代码中指定的 算术操作设置所有的标志位 (N, Z, C, and V) 逻辑和移位操作设置 N and Z 当无移位操作时,保存V和C,或根据移位操作设置 条件执行及标志位** ARM指令可以通过添加适当的条件码后缀来达到条件执行的目的。 这样可以提高代码密度,减少分支跳转指令数目,提高性能。 CMP r3,#0 CMP r3,#0 BEQ skip ADDNE r0,r1,r2 ADD r0,r1,r2 skip 默认情况下,数据处理指令不影响程序状态寄存器的条件码标志位,但可以选择通过添加“S”来影响标志位。 CMP不需要增加 “S”就可改变相应的标志位。 loop … SUBS r1,r1,#1 BNE loop 3.3.2 ARM寻址方式 主要内容 一、立即寻址 二、寄存器寻址 三、寄存器间接寻址 四、基址寻址 五、堆栈寻址 六、块拷贝寻址 七、相对寻址 寻址方式:处理器根据指令中给出的(地址)信息,寻找操作数(物理地址)的方式。 我们将ARM指令系统的寻址方式分为7种(有分为9种的等)。 多寄存器传送指令的寻址模式 例子 要求:保存r1~r3到内存地址0x9000~0x900c,并且更新基址寄存器r4 PRE: r1=0 r2=0 r3=0 r4=0x9000 执行操作: STMIA r4!, {r1, r2, r3}(执行后增加) POST: mem32[0x9000]=0 mem32[0x9004]=0 mem32[0x
您可能关注的文档
最近下载
- 2022年重庆市高职分类考试招生试题文化素质.docx VIP
- 心血管疾病诊断及临床合理用药答案-2024年山西省执业药师继续教育.docx VIP
- 山东大齐KTC2说明书.pdf VIP
- 2022年国赛C题数学建模解答_2022年国赛c题-.pdf VIP
- 纯电动汽车无离合器式AMT换档控制研究.pdf VIP
- 生成式人工智能原理及其影响和应用(南开大学)学习通网课章节测试答案.docx VIP
- 黑布林阅读初一《寻找安乐窝》中文版.docx VIP
- 部编版六年级上册第26课《好的故事》一等奖教学设计(教案).doc VIP
- 煤矿开采学课程设计书.doc VIP
- ASUS华硕主板大师系列Z97-A 用户使用手册 (繁体中文).pdf
原创力文档


文档评论(0)