




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、回 顾.第六章 ARM根本指令集与寻址引见6.1 指令集的特征与功能6.2 ARM寻址方式6.3 ARM指令集编码格式6.4 Thumb指令集.6.1 指令集的特征与功能.1 指令概念机器指令machine instruction指令集 Instruction Set.2. 机器指令要素每一个机器指令必需包含CPU执行所需的全部信息取指令指令地址计算指令译码操作数地址计算数据操作操作数地址计算取操作数存操作数指令完成取下一条多操作数多结果CPU访问存储器或I/OCPU内部操作.2. 机器指令要素操作码 opcode源操作数援用结果操作数援用下一指令援用做何操作?对谁做此操作?如何寻觅被操作数据
2、的存放器或存储器位置?完成后到哪里去取下一个操作?.3. 机器指令的表示方法指令格式指令格式有多种表示方式:定长,变长,混合长度对于32位RISC处置器,普通采用定长格式的32位二进制码。.4. 机器指令的表示方法采用符号表示法来描画机器指令e.g. ADD, SUB,Load,Store。由编译器完成符号二进制的转换.5. 指令类型指令集必需充分,应允许用户表达任何处置义务,可以表示任何高级言语的指令方式。E.g.一行简单程序: X = X + Y设: X的内存位置513; Y的内存位置514;1.将内存513位置的值放入存放器reg_x; Load2.将内存514的值放到另一存放器reg_
3、y; Load3.将reg_y加到reg_x,将结果放入reg_x;ADD4.将结果值存入内存513位置; Store.典型分类指令举例数据传送Load,Store,Push,Pop算术Add,Sub,Mul,Div逻辑AND,OR,NOT,ShiftI/ORead,Write系统控制SWI(软中断),BKPT控制传递Jump,Return,NOP,6. 指令类型的根本分类.7. 指令集设计的关键环节指令集设计是计算机设计最有影响的方面根本设计出发点操作指令表数据类型指令格式存放器寻址方式应提供多少和怎样的操作?对几种数据类型完成操作?8位字节?32位字?64位双字?指令位长度,地址数目,各字
4、段大小CPU存放器数目以及其用途指定操作数产生的方式.8. 操作数类型地址无符号整数32位数值整数或定点数浮点数十进制数 BCDBinary Coded Decimal字符ASCII码逻辑数据.9. 操作类型典型分类CPU动作指令举例数据传送传送数据到另一个位置Load,Store,Push,Pop算术ALU内完成功能设置条件代码和标志Add,Sub,Mul,Div逻辑同算术指令AND,OR,NOT,ShiftI/O向I/O模块发出命令Read,Write系统控制特权指令,保留给操作系统使用SWI(软中断),BKPT控制传递修改PC,以完成程序调用/返回,管理参数传送Jump,Return,N
5、OP,.10. 汇编言语 举例用机器言语编程语句N = I + J + K.6.2 ARM寻址方式.6.2.1 寻址方式.1. 寻址方式的思索为什么要采用多种寻址方式?根本寻址方式:立刻寻址直接寻址间接寻址存放器寻址存放器间接寻址偏移寻址堆栈寻址.2. RISC体系采用的指令集构造ISA有两种ISA:Register-memoryRegister-RegisterRISC采用Register-RegiterLoad-Store.6.2.2 ARM处置器的寻址方式.1. 立刻寻址操作数直接经过指令给出,数据包含在32位指令编码中。32位有效立刻数经过循环右移偶数位而间接得到举例ADD R0,R0
6、,#1AND R8,R7,#0 xFFMOV R1,#0 x00012800.2. 存放器寻址利用存放器中的数值作为操作数,指令中的地址码给出的是存放器名第二操作数位存放器型时,可以选择对第二操作数进展移位举例ADD R0,R1,R2ADD R3,R2,R1,LSR #2ADD R3,R2,R1,LSR R4LSL,LSR,ASL,ASR,ROR,RRX.3. 存放器间接寻址ARM的数据传送指令都是基于存放器间接寻址,经过Load/Store完成对数据的操作。举例LDR R0,R1STR R0,R1R0 mem32R1R0 mem32R1.4. 基址加偏址寻址变址寻址将基址存放器的内容与指令中
7、给出的偏移量相加,构成存储器的有效地址,用于访问基址附近的存储器单元。偏移量不超越4KB指令编码中Offset 为12位前变址,后变址,自动变址三种方式存放器间接寻址实践是偏移量为0的基址加偏址寻址举例LDR R0,R1,#4LDR R0,R1,#4!LDR R0,R1 ,#4LDR R0,R1,R2LDR R0,R1,R2,LSL,#2LDRB R0,R1LDRH R1,R0,#20前变址:R0 Mem32R1+4;自动变址:R0 Mem32R1+4 ;R1R1+4后变址:R0 Mem32R1;R1 R1+4;字节传送:R0 Mem8R1半字传送:R1 Mem16R0+20.5. 堆栈寻址S
8、tack是用于保管数据的一块延续内存,按照FIFO或FILO顺序存取指向堆栈的地址存放器成为堆栈指针SP对堆栈的访问经过堆栈指针R13指向堆栈区域来实现举例STMFD SP!R1-R7,LRLDMFD SP!R1-R7,LR.6. 块拷贝寻址是多存放器传送指令LDM/STM的寻址方式,可以把内存中的数据块加载到多个存放器中去。LDM/STM根据其后缀名,其寻址方式有所不同LDM/STM的后缀选择举例STMIA R9!,(R0,R1,R5)STMIB R9!,(R0,R1,R5)STMDA R9!,(R0,R1,R5)STMDB R9!,(R0,R1,R5).7. 相对寻址可以以为是基址为PC的
9、变址寻址,偏移量给出了目的地址于现行指令之间的相对位置。举例 BL SUBR。SUBR MOV PC,R14 子程序入口地址前往转移到SUBR.小 结.6.3 ARM指令集编码与格式.1. ARM指令分类分类指令指令列举数据处理ADD、ADC、SUB、RSB、SBC; MOV、MVN;AND、ORR、EOR、BIC;CMP、CMN;TST、TEQ;MUL、MLA、UMULL、UMLAL、SMULL、SMLAL数据传送LDR、STR(单寄存器存取);LDM、STM(多寄存器存取);SWP(信号量)状态寄存器访问 MRS、MSR分支指令B、BL;BX、BLX;异常产生SWI(软中断产生);BKPT
10、(断点指令);协处理器CDP;LDC、STC;MCR、MRC;.2. ARM指令编码ARM指令编码格式ARM条件编码格式.3. 根本指令格式S,指令助记符可选条件码;指令执行条件可选后缀,可根据指令结果更新CPSR条件码Rd:目的存放器;Rn:第一操作数存放器第2操作数.3. 根本指令格式举例LDR R0,R1BEQ DATAEVENADDS R2,R1,#1SUBNES R2,R1,#0 x20读取R1地址上的内容,执行条件AL总是条件执行分支指令,执行条件EQ,即相等那么跳转加法指令:R2R1+1;影响CPSR的标志位条件执行减法:R2 R1-0 x20;执行条件NE,影响CPSR的标志位
11、NZCVIFTM4M3M2M1M0.4. 数据处置指令数据处理1.算术运算指令ADD、 SUB、 ADC、SBC 、 RSB、RSC ;2.逻辑运算指令AND、ORR、EOR、BIC;3. 比较指令CMP、CMN;4.测试指令TST、TEQ;5. 乘法指令MUL、MLA、UMULL、UMLAL、SMULL、SMLAL6. 数据传送指令MOV、MVN;.4.1 乘法指令完成2个存放器的数据相乘。按照结果位宽可分成两类:64位结果;仅保管最低有效32位。2种类型都有“乘-累加变形,即将成果延续相加成总和,且适用于无符号和有符号数乘法指令举例MUL、乘(32位结果)Rd (Rm*Rs)31:0MLA
12、、乘-累加(32位结果)Rd (Rm*Rs+Rn)31:0UMULL、无符号数长乘RdHi:RdLo Rn * RsUMLAL、无符号数长乘-累加RdHi:RdLo += Rn * RsSMULL、符号数长乘RdHi:RdLo Rn * RsSMLAL符号数长乘-累加RdHi:RdLo += Rn * Rs.4.2 Load/Store 指令ARM处置器是Load/Store型的。将数据从存储器中调入存放器中进展处置;处置完成后经过存放器将结果存回到存储器中I/O功能是经过存储器映射的可循之外围存放器和终端输入的组合来实现。在存储器映射系统中,外设中的存放器被映射为存储器的地址,对这些存放器的
13、操作方法与对存储器的操作一样处置器对外设的操作也是适用Load/Store指令经过类似存储器操作来完成。.4.2.1 单存放器存取指令LDR/STR传送的数据可以是8位字节、16位半字或32位字可以适用7种寻址方式;可以适用自动变址寻址方式硬件支持指令格式前变址:LDR|STR B Rd,Rn, ! 后变址 LDR|STR B T Rd,Rn,相对PC变址 LDR|STR B Rd, LABELB表示传送无符号字节还是字。缺省B=0为传送字T标志位只能在非用户方式即特权方式下运用。作用是选择用户角度的存储器变换系统LDR/STR 举例.4.2.2 多存放器存取指令LDM/STM可用一条指令将1
14、6个可见存放器的恣意子集存储到内存或者相反。寻址方式遭到限制LDM/STM的两种用途可允许OS加载或存储用户方式存放器来维护和恢复用户处置形状保管作业现场;可作为异常处置前往的一部分,完成从SPSR中恢复CPSR。多存放器存取指令方式指令举例.4.3 形状存放器与GPRs之间的 传送MSR/MRSPSW到GPRs的传送指令MRS;GPRs 到PSW的传送指令MSR;修正PSW普通是经过“读-修正-写3个步骤来完成。不能经过该指令直接修正CPSR中的T位直接将程序形状切换到Thumb形状,而是必需经过BX指令完成形状切换。.4.4 异常中断产生指令SWI指令用于产生SWI异常中断,可以实如今用户
15、方式下对OS中特权方式的程序调用。SWI代表“软件中断,用户可经过其调用系统例程,又被称为监控调用。它将处置器至于SVC监控方式,从0 x08开场执行指令。指令格式与举例BKPT用于产生软件断点,供调试程序运用。用于软件调试,使处置器停顿执行正常指令而进入相应的调试程序。.6.4 Thumb指令.1. Thumb指令编码格式.2. Thumb指令集特点16位指令编码紧缩指令,在ARM的Pipeline中先动态解压,再作为规范32位ARM指令执行CPSR5位T决议指令流类型:T=1那么Thumb;Thumb指令集没有协处置器、信号量、乘加、64位乘、形状存放器等指令;指令均为无条件执行,只需B指
16、令除外;采用2地址格式的数据处置指令;NZCVIFTM4M3M2M1M0.Thumb指令运用:Thumb指令功能受限,除非有严厉的指令空间的要求,普通很少运用。.小 结.10. 汇编言语 举例用机器言语编程语句N = I + J + K假设:I,J,K变量初始化为2,3,4;N, I,J,K 4个变量的存储位置从0 x201处开场;程序从位置0 x101处开场,由4条指令组成:将位置的内容装入;将位置的内容加到;将位置的内容加到;将的内容存入位置;.8. 汇编言语 举例地址内容10100100010000000011020001001000000010103000100100000001110
17、400110010000001002010000000000000010202000000000000001120300000000000001002040000000000000000地址内容10122011021202103120310432042010002202000320300042040000地址指令101LDA201102ADD202103ADD203104STA204201DAT2202DAT3203DAT4204DAT0标号操作操作数FORMULLDAIADDJADDKSTANIDATA2JDATA3KDATA4NDATA0二进制16进制符号程序汇编程序.1. 寻址方式的思索
18、指令格式中的地址字段通常是非常有限的,希望可以大范围的访问主存或虚拟存储器。为了实现此目的,采用了各类寻址技术。各类寻址技术都涉及到如下两方面的权衡:地址范围和寻址灵敏性;存储器援用数与地址计算的复杂性; .2. 几种根本的寻址方式立刻寻址Opcode 操作数指 令.2. 几种根本的寻址方式直接寻址Opcode A指 令操作数存储器.2. 几种根本的寻址方式间接寻址Opcode A指 令操作数存储器.2. 几种根本的寻址方式存放器寻址R 指 令操作数存放器组.2. 几种根本的寻址方式存放器间接寻址R 指 令存放器组操作数存储器.2. 几种根本的寻址方式偏移寻址R 指 令存放器组操作数存储器A
19、.2. 几种根本的寻址方式堆栈寻址指 令栈顶隐含.6. LDM/STM指令后缀选择IAIncrement After操作完成后地址递增IB Increment Before地址递增后完成操作DADecrement After操作完成后地址递减DBDecrement Before地址递减后完成操作EA Empty Increment 空递增堆栈FDFull Decrement满递减堆栈EDEmpty Decrement空递减堆栈FA Full Increment 满递增堆栈用于数据的存储和读取用于堆栈的操作.1. ARM指令集编码.ARM指令集条件码编码.3.2 乘法指令举例构成两个矢量的标积:
20、Mov R11,#20Mov R10,#0LOOP LDR R0,R8,#4LDR R1,R9,#4MLA R10,R0,R1,R10SUBS R11,R11,#1BNE LOOP格式:UMLAL S RdHi,RdLo,Rm,RsE.g.UMLAL R4,R3,R2,R1R4:R3 R2 * R1初始化循环计数初始化总和读取第一分量读取第二分量乘积累加循环计数减一.4.1单存放器存取指令举例LDR R8,R10LDRNE R1,R5,#960!STR R2,R9,#consta-strucLDR R1,localdataLDR R0,R1 ,R2,LSL #2LDRB R0,R2,#3LDR
21、 R1,R0,-R2,LSL #2STR R0, R7,# -8R8 R10有条件地R1R5+960,然后 R5R5+960常量表达式,-40954095加载一个字,该字位于标号Localdata所在位置先将R1指向的内存单元的数据读入,再将R1 R1+R2x4将R2+3中的字节数据读入R0,R0高24位置0将R0-R2x4处的数据读到R1中,R0,R2中的值不变将R0的数据写入到R7位置,再R7 R7-8.4.1 单存放器存取指令举例编程中,经常运用相对PC的方式将R0中的一个字存到外设中:LDR R1,UARTADDSTR R0,R1。UARTADD &1000000也经常运用相对PC的方
22、式将外设中数据读到R0中:LDR R1,UARTADDLDR R0,R1。UARTADD &1000000.4.2 多存放器存取指令指令方式LDM/STM Rn! 数据存取堆栈操作IA(Increment After)EA(Empty Aggrandizement )空递增堆栈IB( Increment Before)FA(FullAggrandizement )满递增堆栈DA(Decrement After)ED(Empty Decrement)满递减堆栈DB(Decrement Before)FD(Full Decrement)满递减堆栈编号低的存放器在存储数据或者加载数据时对应于存储器的
23、低地址.4.2 多存放器存取指令举例LDMIA R1,R0,R2,R5SRMDB R1!,R3-R6,R11,R12STMED SP!,R0-R7,LRR0 R1R2 R1+4R5 R1+8R1-4 R3R1-8 R4R1-12 R5R1-16 R6R1-20 R11R1-24 R12R1 R1-24现场保管:将R0R7,LR入栈R13 R0R13-4 R1。R13 R13-36.4.3.1 PSW到GPRs的传送指令MRS三种情况下会运用:修正PSW内容。MRS用于将PSW内容读到通用存放器中;异常中断允许嵌套时,需求在进入中断之后、嵌套中断发生之前保管当前处置器方式对应的SPSR。这时要先读出SPSR值,再用其它指令将其保管;当发生进程切换时,也需求保管当前存放器值。格式MRS Rd, CPSR|SPSR 举例MRS R0,CPSRMRS R2,SPSR.4.3.2 GPRs 到PSW的传送指令MSR当要保管或修正当前的CPSR/SPSR时,必需将这些内容先传送到GPRs中进展
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商品质量问题跟踪合同(2篇)
- 房屋状况验收协议
- 幼儿园教育叙事演讲稿
- 常用急救知识培训课件
- 《设备投资合同》
- 成本分担协议补充协议
- 招生技巧及流程
- 阿勒泰职业技术学院《外国文学与作品选读》2023-2024学年第二学期期末试卷
- 阿拉善职业技术学院《中国传统文化精髓讲析》2023-2024学年第二学期期末试卷
- 提高电梯安全:培训预防机制
- 猴子补船看图写话-1资料讲解课件
- 四川省高等教育自学考试毕业生登记表【模板】
- EPC项目设计管理操作指南
- IEC 61000-4-5 电磁兼容测试标准
- 保洁服务礼仪培训(共55张)课件
- DB41∕T 1836-2019 矿山地质环境恢复治理工程施工质量验收规范
- 锡矿选厂生产承包合同
- 企业员工职务犯罪培训ppt课件
- 客房服务员绩效考核表
- 膜结构七字形停车棚报价单
- IATF16949监视和测量资源控制程序
评论
0/150
提交评论