ARM指令系统课程教学课件.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2.3 ARM/THUMB指令系统 ;2. 立即寻址;3. 寄存器偏移寻址 ;可采用的移位操作如下: 各种移位操作如图所示,LSL为逻辑左移,LSR为逻辑右移,ASR为算术右移,ROR为循环右移,RRX为带扩展的循环右移1位。;4.寄存器间接寻址 ;5. 基址寻址;6. 多寄存器寻址;7. 堆栈寻址;满递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向内含有效数据项的最高地址。指令如LDMFA、STMFA(ascend)等。 空递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向堆栈上的第一个空位置。指令如LDMEA、STMEA等。 满递减:堆栈通过减小存储器的地址向下增长,堆栈指针指向内含有效数据项的最低地址。指令如LDMFD、STMFD等。 空递减:堆栈通过减小存储器的地址向下增长,堆栈指针指向堆栈下的第一个空位置。指令如LDMED、STMED等。 ;堆栈寻址指令举例如下: STMFD SP!,{R1-R7,LR} ;将R1~R7、LR入栈。满递减堆栈 LDMFD SP!,{R1-R7,LR} ;数据出栈,放人R1~R7、LR寄存器。满递减堆栈;8. 块拷贝寻址; 增加;;9. 相对寻址 ;2.3.2 ARM指令集介绍 ;1. 指令格式 ;在上面的基本格式中,“”符号内的项是必需的,“{}”符号内的项是可选的。 例如,opcode是指令助记符,这是必须书写的;而{cond}为指令执行条件,是可选项。若不书写,则使用默认条件AL(无条件执行)。; 指令格式举例如下: LDR R0,[R1] ;读取R1地址上的存储器单元内容,执行条件AL BEQ D1 ;分支指令,执行条件EQ,即相等则跳转到D1 ADDS R1,R1,#1 ;加法指令,R1+1=R1,影响CPSR寄存器(S) SUBNES R1,R1,#0x10 ;条件执行减法运算(NE),R1-0x10=R1,影响CPSR寄存器(S); 在ARM指令中,灵活地使用第2个操作数能够提高代码效率。第2个操作数的形式如下: (1) #inmed_8r——常数表达式 该常数必须对应8位位图,即常数是由一个8位的常数循环移位偶数位得到的。 合法常量:0x3FC、0、0xF0000000、200、0xF0000001。 非法常量:0xlFE、511、0xFFFF、0x1010、0xF0000010。 常数表达式应用举例: MOV R0,#1 ;R0=1 AND R1,R2,#0x0F ;R2与0x0F,结果保存在Rl LDR R0,[R1],#-4 ;读取R1地址上的存储??单元内容,且R1=R1- 4;(2) Rm——在寄存器方式下,操作数即为寄存器的数值。 寄存器方式应用举例: SUB R1,R1,R2 ;R1-R2→R1 MOV PC,R0 ;PC=R0,程序跳转到指定地址 LDR R0,[R1],-R2 ;Rl所指存储器单元内容存人R0,且R1 = R1 - R2 ;(3) Rm,shift——寄存器移位方式 将寄存器的移位结果作为操作数,但Rm值保存不变,移位方法如下: ASR #n 算术右移n位(1≤n≤32)。 LSL #n 逻辑左移n位(1≤n≤31)。 LSR #n 逻辑右移n位(1≤n≤32)。 ROR #n 循环右移n位(1≤n≤31)。 RRX 带扩展的循环右移1位。 type Rs 其中,type为ASR、LSL、LSR和ROR中的一种;Rs为偏移量寄存器,低8位有效。若其值大于或等于32,则第2个操作数的结果为0 (ASR、ROR例外)。 寄存器偏移方式应用举例: ADD R1,R1,R1,LSL #3 ;R1=R1×9 SUB R1,R1,R2,LSR #2 ;R1=R1-R2×4; 2. 条件码 使用指令条件码可实现高效的逻辑操作。表3-6所列为指令条件码表。 对于Thumb指令集,只有B指令具有条件码执行功能。此指令的条件码同表3-6。但如果为无条件执行,条件码助记符AL不能在指令中书写。;3. ARM存储器访问指令 ;SWP指令是一条寄存器和存储器内容交换的指令,可用于信号量操作等。 ARM处理器是冯·诺依曼存储结构,程序空间、RAM空间及I/O映射空间统一编址,除对RAM操作以外,对外围I/O、程序数据的访问均要通过加载/存储指令进行。 表3-7所列为ARM存储器访问指令表。 ;(1) LDR和STR——加载/存储

文档评论(0)

tianebandeyazi + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档