版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 本章以流行本章以流行ARM处理器为例介绍处理器为例介绍嵌入式微处理器的指令系统嵌入式微处理器的指令系统 ,主要介,主要介绍绍ARM微处理器的寻址方式以及微处理器的寻址方式以及ARM指令集、指令集、Thumb和和Thumb-2指令集。指令集。ARMARM指令集特点:指令集特点: ARM使用标准的、固定长度的使用标准的、固定长度的32位指令格式位指令格式 所有所有ARM指令都使用指令都使用4位的条件编码来决定指位的条件编码来决定指令是否执行,以解决指令执行的条件判断令是否执行,以解决指令执行的条件判断 ARM微处理器的指令集是加载微处理器的指令集是加载/存储型的,即存储型的,即指令集仅能处理寄存
2、器中的数据指令集仅能处理寄存器中的数据 返回指令分类(指令分类(6 6类)类)ARMARM微处理器的指令集可以分为微处理器的指令集可以分为分支指令分支指令、数数据处理指令、据处理指令、程序状态寄存器(程序状态寄存器(CPSRCPSR)处理指)处理指令令、加载加载/ /存储指令、存储指令、协处理器指令协处理器指令和和异常产异常产生指令。生指令。 l 当处理器工作在当处理器工作在ARM状态时,几乎所有的指令状态时,几乎所有的指令均根据均根据CPSR中条件码的状态和指令的条件域中条件码的状态和指令的条件域有条件的执行。有条件的执行。l 当指令的执行条件满足时,指令被执行,否则当指令的执行条件满足时,
3、指令被执行,否则指令被忽略。指令被忽略。 l 每一条每一条ARM指令包含指令包含4位的条件码,位于指令位的条件码,位于指令的最高的最高4位位31:28。 详见下表详见下表条件码条件码助记符后缀助记符后缀标标 志志含含 义义0000EQZ置位置位相等相等0001NEZ清零清零不相等不相等0010CSC置位置位无符号数大于或等于无符号数大于或等于0011CCC清零清零无符号数小于无符号数小于0100MIN置位置位负数负数0101PLN清零清零正数或零正数或零0110VSV置位置位溢出溢出0111VCV清零清零未溢出未溢出1000HIC置位置位Z清零清零无符号数大于无符号数大于1001LSC清零清零
4、Z置位置位无符号数小于或等于无符号数小于或等于1010GEN等于等于V带符号数大于或等于带符号数大于或等于1011LTN不等于不等于V带符号数小于带符号数小于1100GTZ清零且(清零且(N等于等于V)带符号数大于带符号数大于1101LEZ置位或(置位或(N不等于不等于V)带符号数小于或等于带符号数小于或等于1110AL忽略忽略无条件执行无条件执行返回l“# #”立即数符号立即数符号 “#”符号表示立即数,其中后可以是二进制数,也可以是十进制数符号表示立即数,其中后可以是二进制数,也可以是十进制数或十六进制数或十六进制数l“0 x”十六进制符号十六进制符号 “0 x”后面的数据(每位可以是后面
5、的数据(每位可以是0-9,A-F)表示十六进制)表示十六进制数,如数,如0 xFFFFl“!”更新基址寄存器符号更新基址寄存器符号 表示指令在完成操作后最后的地址应该写入基址寄存器表示指令在完成操作后最后的地址应该写入基址寄存器 l“-”指示寄存器列表范围符号指示寄存器列表范围符号 表示多个连续寄存器表示多个连续寄存器 ,如,如R0-R7表示寄存器共表示寄存器共8个寄存器:个寄存器:R0,R1,R2,R3,R4,R5,R6和和R7。即含义。即含义“从从到到” l定义定义 所谓寻址方式就是处理器根据指令中给出的地所谓寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式。址信息来寻找物理
6、地址的方式。l寻址方式种类寻址方式种类 目前目前ARMARM指令系统支持如下指令系统支持如下7 7种常见的寻址方式。种常见的寻址方式。 立即寻址,立即寻址,寄存器寻址,寄存器寻址,寄存器间接寻址寄存器间接寻址 基址加变址寻址,基址加变址寻址,相对寻址,相对寻址,堆栈寻址堆栈寻址 块拷贝块拷贝( (多寄存器)寻址多寄存器)寻址返回 立即寻址立即寻址也叫立即数寻址,操作数本身就在指令也叫立即数寻址,操作数本身就在指令中给出,只要取出指令也就取到了操作数,这个操中给出,只要取出指令也就取到了操作数,这个操作数被称为立即数。作数被称为立即数。 例如:例如:MOV R0,#0 x10FF66ED ADC
7、 R0,R0,#1000 立即数立即数注意立即数前面的注意立即数前面的“”含义:含义:R0R01000+C返回寄存器寻址寄存器寻址是利用寄存器中的数值作为操作数是利用寄存器中的数值作为操作数寻址的一种方式,此方式执行效率较高,经常寻址的一种方式,此方式执行效率较高,经常被各种处理器采用。被各种处理器采用。 例如:例如: ADD R0,R1,R2含义: R0R1R2寄存器间接寻址寄存器间接寻址是以寄存器中的值作为操作数是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中,用于间的地址,而操作数本身存放在存储器中,用于间接接寻址的寄存器必须用接接寻址的寄存器必须用 括起来。括起来。 例如:
8、例如:ADD R0,R1,R2 LDR R0,R1含义:含义:R0R1R2含义:含义:R0R1基址加变址寻址基址加变址寻址是将寄存器(该寄存器一般是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。移量相加,从而得到一个操作数的有效地址。例如:例如:LDR R0,R1,4 LDR R0,R1,4! LDR R0,R1 ,4 变址寻址方式常用于访问某基地址变址寻址方式常用于访问某基地址附近的地址单元。附近的地址单元。R0R14R0R14、R1R14R0R1、R1R14相对寻址相对寻址以程序计数器以程序
9、计数器PC的当前值为基地址,的当前值为基地址,指令中的地址标号作为偏移量,将两者指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。相加之后得到操作数的有效地址。例如:例如: BLSubroutine_A ;跳转到子程序;跳转到子程序Subroutine_A处执行处执行 Subroutine_A MOVPC,LR;从子程序返回;从子程序返回0 x2100000 偏移量为0 x0100 PC0 x2100100 PC执行执行堆栈堆栈是一种数据结构,按先进后出(是一种数据结构,按先进后出(First In Last Out,FILO)的方式工作,使用堆栈指针专)的方式工作,使用堆栈指针
10、专用寄存器指示当前的操作位置,堆栈指针总是指用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。向栈顶。堆栈的生成方式堆栈的生成方式 : 满递增堆栈 满递减堆栈 空递增堆栈 空递减堆栈 当堆栈指针指向最后压入堆栈的数当堆栈指针指向最后压入堆栈的数据时,称为满堆栈(据时,称为满堆栈(Full Stack) 当堆栈由低地址向高地址当堆栈由低地址向高地址生成时,称为递增堆栈生成时,称为递增堆栈 当堆栈由高地址向低地址当堆栈由高地址向低地址生成时,称为递减堆栈生成时,称为递减堆栈 当堆栈指针指向下一个将要放入数据的当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈(空位置时,称为空堆栈(Empty
11、Stack) 块拷贝寻址块拷贝寻址又称多寄存器寻址,采用多寄存又称多寄存器寻址,采用多寄存器寻址方式,一条指令可以完成多个寄存器值的器寻址方式,一条指令可以完成多个寄存器值的传送。传送。 例如:例如:LDMIA R0,R1,R2,R3,R4后缀后缀IA表示在每次执行完加载表示在每次执行完加载/存储操作后,存储操作后,R0按字长度增加按字长度增加 ;R1R0;R2R04;R3R08;R4R0123.3.233.3.333.3.13.3.433.3.533.3.6返回 数据传送指令数据传送指令 比较指令比较指令 测试指令测试指令 加法指令加法指令 减法指令减法指令 逻辑运算指令逻辑运算指令 乘法指
12、令与乘加指令乘法指令与乘加指令MOV 数据传送指令数据传送指令 如:如:MOV R1,R0 MVN 数据取反传送指令数据取反传送指令 如:如:MVN R0,0 CMP 比较指令比较指令 CMP R1,R0 CMN 反值比较指令反值比较指令 CMNR1,100TEQ 相等测试指令相等测试指令 TEQ R1,R2TST 位测试指令位测试指令 TSTR1,0 xfe ADD 加法指令加法指令 ADD R0,R1,#256 ADC 带进位加法指令带进位加法指令 ADC R3,R7,R11 SUB 减法指令减法指令 SUB R0,R1,#256 SBC 带借位减法指令带借位减法指令 SUBS R0,R1
13、,R2 RSB 反向减法指令反向减法指令 RSB R0,R1,R2 RSC 带借位反向减法指令带借位反向减法指令 RSC R0,R1,R2 AND 逻辑与指令逻辑与指令 ORR 逻辑或指令逻辑或指令 EOR 逻辑异或指令逻辑异或指令 BIC 位清除指令位清除指令 返回 程序状态指令程序状态指令用于在程序状态寄存器和通用寄用于在程序状态寄存器和通用寄存器之间传送数据。存器之间传送数据。lMRS程序状态寄存器到通用寄存器的数据传程序状态寄存器到通用寄存器的数据传 送指令送指令 例如:例如:MRS R0,CPSR;传送;传送CPSR的内容到的内容到R0lMSR通用寄存器到程序状态寄存器的数据传送通用
14、寄存器到程序状态寄存器的数据传送指令指令 例如:例如:MSR SPSR,R0;传送;传送R0的内容到的内容到SPSR 返回分支指令分支指令用于实现程序流程的跳转,用于实现程序流程的跳转,ARM指令集中的指令集中的分支指令可以完成从当前指令向前或向后的分支指令可以完成从当前指令向前或向后的32MB的地址空的地址空间的跳转,包括间的跳转,包括4条指令:条指令:lB转移指令转移指令lBL带返回的转移指令带返回的转移指令lBLX带返回且带状态切换的转移指令带返回且带状态切换的转移指令lBX带状态切换的转移指令带状态切换的转移指令 点击右图示例点击右图示例返回 加载指令加载指令用于将存储器中的数据传送到
15、寄存用于将存储器中的数据传送到寄存器,器,存储指令存储指令则完成相反的操作。则完成相反的操作。加载存储指令有三类:加载存储指令有三类:l单一数据加载单一数据加载/存储存储l批量数据加载批量数据加载/存储存储数据交换指令数据交换指令 数据交换指令数据交换指令数据交换指令数据交换指令SWPSWP字数据交换指令字数据交换指令示例:示例:SWP SWP R0R0,R1R1,R2 R2 SWP SWP R0R0,R0R0,R1 R1 SWPBSWPB字节数据交换指令字节数据交换指令示例:示例:SWPB SWPB R0R0,R1R1,R2 R2 R2R0R1R2R0 R1低低8位位R0 R1返回数据交换指
16、令数据交换指令数据交换指令数据交换指令SWPSWP字数据交换指令字数据交换指令示例:示例:SWP SWP R0R0,R1R1,R2 R2 SWP SWP R0R0,R0R0,R1 R1 SWPBSWPB字节数据交换指令字节数据交换指令示例:示例:SWPB SWPB R0R0,R1R1,R2 R2 R2R0R1R2R0 R1低低8位位R0 R1ARM协处理器指令包括协处理器指令包括5条:条:CDP(协处理器数操作指令)(协处理器数操作指令)LDC(协处理器数据加载指令)(协处理器数据加载指令)STC(协处理器数据存储指令)(协处理器数据存储指令)MCR(ARM处理器寄存器到协处理器寄存器处理器寄
17、存器到协处理器寄存器 的数据传送指令)的数据传送指令)MRC(协处理器寄存器到(协处理器寄存器到ARM处理器寄存器处理器寄存器 的数据传送指令)。的数据传送指令)。 返回 ARM微处理器所支持的异常中断指令有如下两微处理器所支持的异常中断指令有如下两条:条: lSWI 软件中断指令软件中断指令 示例:示例: SWI 0 x01 ;该指令调用操作系统编号为;该指令调用操作系统编号为01的系统例程。的系统例程。lBKPT 断点中断指令断点中断指令 示例:示例:BKPT 0XF010支持支持16位的立即数位的立即数 返回lThumbThumb指令集指令集指令编码长度为指令编码长度为1616位位,但指
18、令的,但指令的操作数和指令地址仍是操作数和指令地址仍是3232位;位;lThumbThumb指令集是指令集是ARMARM指令系统的一个指令系统的一个子集子集 ; lThumbThumb指令集在保留指令集在保留3232代码优势的同时,大大代码优势的同时,大大的节省了系统的存储空间。的节省了系统的存储空间。 返回 返回 l数据处理指令数据处理指令l分支指令分支指令l加载加载/ /存储指令存储指令l异常中断指令异常中断指令SWI软件中断指令软件中断指令BKPT断点异常中断指令断点异常中断指令lThumb-2Thumb-2是一种新型混合指令集,融合了是一种新型混合指令集,融合了1616位位和和3232位指令,用于实现密度和性能的最佳平衡位指令,用于实现密度和性能的最佳平衡。 返回l指令性指令:指令性指令:可以执行的指令可以执行的指令l伪指令:伪指令:是一种指示性语句,是不可执行的指令。是一种指示性语句,是不可执行的指令。 l指令性语句汇编后由相应的指令性语句汇编后由相应的机器代码机器代码所取代
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024版离婚协议书债务承担规定
- 珠宝首饰承揽合同样本
- 快件服装代理合同范本
- 2024两人合伙协议书
- 工程承包合同协议书撰写指南
- 国有土地批租协议书样本
- 丙类基础地理信息数据使用许可协议合同范本
- 标准学生校外租房合同模板
- 2024年山东省公务员考试《行测》真题及答案解析
- 国有企业转让协议
- 蒸汽锅炉可行性方案
- 航空主题酒店策划方案
- 煤焦酚-安全技术说明书MSDS
- 【课件】第二课时光合作用的原理和应用课件-2023-2024学年高一上学期生物人教版(2019)必修1
- 焚烧炉RTO操作规程
- 数据库安全事件响应机制
- 涉侨法律知识讲座
- 脑血管病三级预防
- 苗木出库入库管理制度
- 少先队辅导员笔试题
- NCCN成人癌痛指南
评论
0/150
提交评论