第四章 Thumb 指令集 4.1 Thumb 指令集概述 4.2 Thumb 指令详细介绍.

Slides:



Advertisements
Similar presentations
平面构成 第六章 平面构成形式与法则 — 破规与变异. 第七章 平面构成形式与法则 — 破规与变异 破规与变异构成的形式、有下列四类: 一、特异构成 特异构成。其表现特征是,在普遍相同性质的事物 当中,有个别异质性的事物,便会立即显现出来。
Advertisements

ARM 编程技巧.
信息技术:硬件、软件、网络、数据库 计算机技术、多媒体技术、压缩技术...
嵌入式系统教案 武汉创维特信息技术有限公司 2017/3/4.
NEUSOFT Institute of information Technology .ChengDu
第3章 基于ARM的处理器体系结构1 主讲 马洪连.
微机原理与接口技术 第二章 ARM微处理器硬件结构
大连理工大学软件学院 软件工程系 赖晓晨 计算机组成与结构 大连理工大学软件学院 软件工程系 赖晓晨
微處理機 Microprocessor (100上) ARM 內核嵌入式SOC原理
ARM及Thumb指令集.
嵌入式系统讲义 第3章 ARM指令系统 周国运
第4章 ARM7TDMI(-S)指令系统.
第2章 汇编语言与汇编程序 ——8086/8088指令系统 mov ax,12h call display Jmp 1234h.
指令集架構 計算機也跟人類一樣,需要提供一套完整的語言讓人們跟它充分溝通,以完成正確的計算工作。
MIPS 体系结构介绍 张福新.
C H A P T E R 4 ARM7指令集.
第2章 计算机指令集结构 曲冠南
异 常 处 理.
College of Computer Science & Technology
第4章 汇编语言程序设计 汇编语言源程序格式 汇编语言上机过程 汇编语言与C语言混合编程技术.
走进编程 程序的顺序结构(二).
7.1 机器指令 7.2 操作数类型和操作类型 7.3 寻址方式 7.4 指令格式举例 7.5 RISC 技术.
Lecture 03: Cortex M3存储系统访问
汇编语言程序设计课程设计 第二次实验 DEBUG基本命令与算术运算指令
提纲 第四章 ARM指令分类及寻址方式 1 ARM 微处理器指令的分类 2 ARM 微处理器指令的条件域 3 ARM 微处理器指令的寻址方式.
嵌入式体系结构与应用 第三章-ARM指令系统(ARMv4T).
College of Computer Science & Technology
第四章 ARM指令集 ARM指令集概述 ARM寻址方式 ARM指令详细介绍 一些基本的ARM指令功能段.
第3章 ARM寻址方式与指令系统 ARM编程模型 ARM指令格式和寻址方式 ARM指令集 Thumb指令集.
第二章 Java语言基础.
逆向工程-汇编语言
ARM處理器 定址方式.
数据挖掘工具性能比较.
CPU结构和功能.
第五章 C/C++及汇编语言的混合编程 5.1 ARM C/C++编译器 5.2 在C/C++程序中内嵌汇编指令
嵌入式系统教案 武汉创维特信息技术有限公司 2019/1/18.
第二章 计算机指令集结构 指令集结构是系统结构的主要内容之一,其功能设计实际上就是确定软/硬件功能分配。
(第2版).
(第2版).
第2章 ARM体系结构.
第7章 在C/C++中使用汇编 罗文坚 中国科大 计算机学院
C语言程序设计 主讲教师:陆幼利.
ARM 处理器内核.
工业机器人技术基础及应用 主讲人:顾老师
ARM及Thumb指令集 (练习).
本节内容 随机读取 视频提供:昆山爱达人信息技术有限公司.
第3章 ARM微處理器的指令集.
ARM指令集 Author : Steve Furber Advisor: Mei-Ling Chiang Speaker: 徐翔宇
嵌入式系统教案 武汉创维特信息技术有限公司 2019/4/29.
CPU中的专用寄存器(SFR) 一、累加器Acc 二、通用寄存器B 三、程序计数器PC 四、堆栈指针SP 五、数据指针DPTR
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
微處理機 Microprocessor (100上)
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
美麗的西子湖.
本节内容 内存复制指令 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
iSIGHT 基本培训 使用 Excel的栅栏问题
任务五 学习、应用控制转移类指令 单片机应用技术 认知1 掌握无条件转移指令格式及应用
College of Computer Science & Technology
ARM简介及BootLoader介绍 黄大荣
一元二次不等式解法(1).
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
3. 逻辑运算指令 A、简单逻辑操作指令 CLR A. (不影响CY、AC、 OV标志) CPL A
微處理機 Microprocessor (100上) ARM 內核嵌入式SOC原理
本节内容 通用寄存器 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第3章 目录 1.简介 2.ARM7TDMI 3.ARM7TDMI的模块和内部框图 4.体系结构直接支持的数据类型 5.处理器状态
微机原理与接口技术 西安邮电大学计算机学院 宁晓菊.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
第三章 CPU子系统 西南石油大学计算机科学学院 主讲教师 杨 梅 联系电话:
嵌入式系统教案 武汉创维特信息技术有限公司 2019/10/1.
Presentation transcript:

第四章 Thumb 指令集 4.1 Thumb 指令集概述 4.2 Thumb 指令详细介绍

4.1 Thumb指令集概述 4.1.1 Thumb指令集编码 4.1.2 Thumb状态切换 4.1.3 编程模型 ARM开发工具完全支持Thumb指令,应用程序可以灵活的将ARM和Thumb子程序混合编程以便在例程的基础上提高性能或代码密度。在编写Thumb指令时,先要用伪指令CODE16声明(ADS的编译环境下),而且在ARM指令中要使用BX指令跳转到Thumb指令,以切换处理器状态。本节可以分为以下几个部分: 4.1.1 Thumb指令集编码 4.1.2 Thumb状态切换 4.1.3 编程模型 4.1.4 Thumb指令集特性

4.1.1Thumb指令集编码 Thumb指令集编码如下:

4.1.2Thumb状态切换 在任何时刻,CPSR的第5位(位T)决定了ARM微处理器执行的是ARM指令流还是Thumb指令流。当T置1,则认为是16位的Thumb指令流;当T置0,则认为是32位的ARM指令流。 进入Thumb模式 进入Thumb指令模式有两种方法:一种是执行一条交换转移指令BX,另一种方法是利用异常返回,也可以把微处理器从ARM模式转换为Thumb模式。 退出Thumb模式 退出Thumb指令模式也有两种方法:一种是执行Thumb指令中的交换转移BX指令可以显式的返回到ARM指令流。另一种是利用异常进入ARM指令流 。

4.1.3编程模型 Thumb指令集是ARM指令集的一个子集,并只能对限定的ARM寄存器进行操作。其编程模型如下图所示: r0 r1 r2 SP(r13) LR(r14) PC(r15) Lo寄存器 Hi寄存器 CPSR 有阴影的寄存器 访问时受到限制

4.1.4Thumb指令集特点 Thumb指令继承了ARM指令集的许多特点 Thumb指令集丢弃了ARM指令集一些特性 Thumb指令也是采用Load/Store结构,有数据处理、数据传送及流控制指令等。 Thumb指令集丢弃了ARM指令集一些特性 大多数Thumb指令是无条件执行的(除了转移指令B),而所有ARM指令都是条件执行的。许多Thumb数据处理指令采用2地址格式,即目的寄存器与一个源寄存器相同,而大多数ARM数据处理指令采用的是3地址格式(除了64位乘法指令外)。 Thumb异常时表现的一些特点 所有异常都会使微处理器返回到ARM模式状态,并在ARM的编程模式中处理。由于ARM微处理器字传送地址必须可被4整除(即字对准),半字传送地址必须可被2整除(即半字对准)。而Thumb指令是2个字节长,而不是4个字节,所以,由Thumb执行状态进入异常时其自然偏移与ARM不同。

4.2 Thumb指令集详细介绍 16位Thumb指令集是从32位ARM指令集提取指令格式的,每条Thumb指令有相同处理器模型所对应的32位ARM指令。 4.2.1 数据处理指令; 4.2.2 转移指令; 4.2.3 Load/Store指令; 4.2.4异常中断指令。

4.2.1Thumb数据处理指令 Thumb数据处理指令包括一组高度优化且相当复杂的指令,范围涵盖编译器通常需要的大多数操作。ARM指令支持在单条指令中完成一个操作数的移位及一个ALU操作,但Thumb指令集将移位操作和ALU操作分离为不同的指令。本部分从以下几个方面介绍: 数据处理指令的二进制编码 数据处理指令的分类 ARM指令与Thumb指令比较

数据处理指令 数据处理指令的二进制编码如下图:

数据处理指令 按照数据处理指令的功能,可以将其分为以下几类: 算术运算指令,它又分为以下几类: 移位和循环移位操作(ASR,LSL,LSR和ROR) 比较指令(CMP和CMN) 传送和取负指令(MOV,MVN和NEG) 测试指令(TST) ADD与SUB—低寄存器加法和减法 ADD—高或低寄存器 ADD与SUB—SP ADD—PC或SP相对偏移 ADC,SBC和MUL

数据处理指令 ARM指令与Thumb指令低寄存器比较: ARM指令 Thumb指令 MOVS Rd, #<#imm8> MOV   MOV MVNS Rm MVN CMP RN, Rn, CMN TST ADDS #<#imm3> ADD ADCS ADC SUBS SUB SBCS SBC RSBS #0 NEG Rn Rm, LSL #<#sh> LSL #<#sh> LSL Rs Rs LSR #<#sh> LSR LSR Rs ASR #<#sh> ASR ROR Rs ROR ANDS AND EORS EOR ORRS ORR BICS BIC MULS Rd MUL

数据处理指令 ARM指令与Thumb指令高寄存器比较: ARM指令 Thumb指令 ADD Rd, Rm Rm (1/2 Hi regs)   CMP Rn, PC, #<#imm8> SP, #<#imm7> SUB

4.2.2Thumb转移指令 ARM指令有一个大的(24位)偏移域(offset field),这不可能在16位Thumb指令格式中表示。为此Thumb指令集有多种方法实现其子功能。本部分从以下几个方面介绍: 转移指令的二进制编码 转移指令的汇编格式 转移指令的分类

转移指令 转移指令的二进制编码如下:

转移指令 转移指令的汇编格式如下: 转移链接产生两条格式3指令。格式3指令必须成对出现而不能单独使用。同样BLX产生一条格式3指令和一条格式3a指令。汇编器根据当前指令地址、目标指令标识符的地址以及对流水线行为的微调计算出应插入指令中相应的偏移量。若转移目标不在寻址范围内则给出错误信息。 B <cond> <label> ;格式1 目标为Thumb代码 B <label> ;格式2 目标为Thumb代码 BL <label> ;格式3 目标为Thumb代码 BLX <label> ;格式3a 目标为ARM代码 B{L}X Rm ;格式4 目标为ARM或Thumb代码

转移指令 转移指令分类如下: B-分支指令,Thumb指令集惟一可条件执行的指令。 BL-带链接的长分支。 BX-分支指令,并可选择地切换指令集。 BLX-带链接分支,并可选地交换指令集。

4.2.3数据存取指令 Thumb的数据存取指令又可以分为: 单寄存器数据存取指令(LDR和STR) 多寄存器数据存取指令 (LDM和STM)

单寄存器数据存取指令(LDR和STR) 二进制编码如下:

单寄存器数据存取指令(LDR和STR) 汇编格式如下: <op> Rd,[Rn,#<#off5>] ;<op> = LDR|LDRB|STR|STRB <op> Rd,[Rn,#<#off5>] ;<op> = LDRH| STRH <op> Rd,[Rn,Rm] ;<op> =LDR|LDRH|LDRSH|LDRB|LDRSB|STR|STRH|STRB <op> Rd,[PC,#<#off8>] <op> Rd,[SP,#<#off8>] ;<op> = LDR| STR//该两条指令偏移量为8位

多寄存器数据存取指令 二进制编码如下:

多寄存器数据存取指令 汇编格式如下: LDMIA Rn!,{<reg list>} STMIA Rn!,{<reg list>} POP {<reg list>{,pc}} PUSH {<reg list>{,lr}}

4.2.4异常中断指令 Thumb软件中断指令 Thumb软件中断指令的二进制编码如下: Thumb软件中断指令的汇编格式如下: SWI <8位立即数>;<8位立即数>为数字表达式,其取值为0~255范围内的整数。

异常中断指令 Thumb断点指令 Thumb断点指令的二进制编码如下: Thumb断点指令的汇编格式如下: BKPT immed_8