- 1、本文档共161页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
杨词慧
yangcihui@nchu.edu.cn;第3章 ARM指令系统及程序设计基础;寻址方式
处理器根据指令中给出的地址信息寻找物理地址的方式。
寻找操作数或操作数地址的方式。;寻址方式(续)
;立即寻址
也叫立即数寻址,操作数本身在指令中给出,该操作数被称为立即数。
例如:ADD R0, R0, #1 ; R0 ? R0+1
立即数须以“#”为前缀,对于十六进制表示的立即数,还需在“#”后加上“0x”或“”。;寄存器寻址
指令地址码中给出寄存器的编号,操作数存在寄存器中。例如:ADD R0, R1, R2 ; R0 ? R1+R2
寄存器间接寻址
以寄存器的值作为操作数地址。例如:ADD R0, R1, [R2] ; R0 ? R1+[R2];基址变址寻址
将寄存器的内容与指令中给出的地址偏移量相加,得到操作数的地址。
包括
基址加偏移量寻址方式
基址加索引寻址方式
;基址变址寻址(续)
基址加偏移量寻址方式
将寄存器内容与指令中给出的地址偏移量相加,得到操作数的有效地址。如:LDR R0, [R1, #4] ; R0 ? [R1+4]
前变址:基址加变址作为操作数地址。后变址:基址作为操作数的地址,传送后自动更新基址寄存器的值。;基址变址寻址(续);基址变址寻址(续);基址变址寻址(续)
基址加索引寻址方式
将基址寄存器的值与索引寄存器的值相加,形成操作数的有效地址。例如: LDR R0, [R1, R2] ; R0 ? [R1+R2];多寄存器寻址
一次完成多个(最多16)寄存器值的传送
例如:LDMIA R0, {R1, R2, R4} ; R1 ? [R0] ; R2 ? [R0+4] ; R4 ? [R0+8];多寄存器寻址(续)
;寄存器移位寻址
操作数为寄存器中数做相应的移位而得到
例如:ADD R0, R1, R2, LSL #3 ; R0 ?R1+8×R2;寄存器移位寻址(续)
ARM中的移位或循环移位操作
LSL:逻辑左移(Logical Shift Left)
LSR:逻辑右移(Logical Shift Right);寄存器移位寻址(续)
ASR:算术右移(Arithmetic Shift Right)。移位过程中保持符号位不变,若源操作数为正数,则字的高端空出的位补0。若源操作数为负数,则字的高端空出的位补1。
;寄存器移位寻址(续)
ROR:循环右移(Rotate Right)。从字的最低端移出的位依次填入字的高端空出的位。;寄存器移位寻址(续)
RRX:扩展的循环右移(Rotate Right Extended )。操作数向右移一位,左侧空位由状态寄存器C位填充。
当移位的类型为RRX时,无需指定移位的位数,其它的则须指定移位的位数。;相对寻址
以PC当前值作为基地址,指令中的地址标号作为位移量,两者相加后得到操作数的有效地址。例如:BL NEXT ; 跳转至子程序 NEXT ……NEXT ……MOV PC, LR ; 从子程序返回;堆栈寻址
堆栈:按先进后出(FILO)的方式工作,使用堆栈指针(Stack Pointer, SP) 指示当前操作位置。
根据栈指针的指向位置可将堆栈分为
满堆栈:SP指向最后压入堆栈的数据。
空堆栈:SP指向下个将放入数据空位置;堆栈寻址;堆栈寻址(续)
根据堆栈的生成方式可将堆栈分为
递增堆栈(Ascending Stack):堆栈由低地址向高地址生成。
递减堆栈(Descending Stack) :由高地址向低地址生成。;堆栈寻址(续);3.1 ARM寻址方式;堆栈寻址(续)
ARM支持四种类型堆栈工作方式
满递增堆栈:SP指向最后压入的数据,且由低地址向高地址生成。
满递减堆栈:SP指向最后压入的数据,且由高地址向低地址生产。;堆栈寻址(续)
;堆栈寻址(续)
堆栈工作方式
空递增堆栈:SP指向下个将放入数据的空位置,且由低地址向高地址生成。
空递减堆栈:SP指向下个将要放入数据的空位置,且由高地址向低地址生成。;堆栈寻址(续)
;ARM指令集分类
加载/存储指令
数据处理指令
分支指令
状态寄存器访问指令
异常/中断指令
协处理器指令;ARM指令的特点
所有指令都是32bit;
大多数指令都在单周期内完成;
所有指令都可以条件执行;
load/store体系结构;
指令集可以通过协处理器扩展。;ARM指令的格式
;3.2 ARM指令集;3.2 ARM指令集;ARM指令的条件执行
所有ARM指令都可包含一个可选的条件码,只有当CPSR中条件标志位满足指定条件时,指令才会被执行。否则以NOP指令通过流水线。
;3.2 ARM指令集;3.2 ARM指令集;加载/存储指令
Load:将
您可能关注的文档
最近下载
- DB41T 2431-2023 重点区域地质灾害风险调查评价规范(1:10000).docx VIP
- 2012 INTERNATIONAL BUILDING CODE (2012年国际建筑规范).pdf VIP
- 金龙湖养老度假基地可行性报告.doc VIP
- 光伏发电工程施工规范.docx VIP
- 渗透检测工艺规程.pptx VIP
- 质量员考试(市政质量)基础知识试卷真题(2025年新版附解析).docx VIP
- 幼儿园课件:变焦PPT.ppt
- KEF音响无线HiFi扬声器LS50 Wireless II用户手册.pdf VIP
- 一种低气味、低刺激双固化胶粘剂及其制备方法.pdf VIP
- 设计机构设置和岗位职责.docx VIP
文档评论(0)