1 / 63
文档名称:

嵌入式ARM结构修正 版第三章.ppt

格式:ppt   大小:826KB   页数:63页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

嵌入式ARM结构修正 版第三章.ppt

上传人:endfrs 2018/6/2 文件大小:826 KB

下载得到文件列表

嵌入式ARM结构修正 版第三章.ppt

相关文档

文档介绍

文档介绍:第三章 ARM指令集和Thumb指令集
Thumb 指令集概述
Thumb 指令详细介绍
Thumb指令集
ARM开发工具完全支持Thumb指令,应用程序可以灵活的将ARM和Thumb子程序混合编程以便在例程的基础上提高性能或代码密度。在编写Thumb指令时,先要用伪指令CODE16声明(ADS的编译环境下),而且在ARM指令中要使用BX指令跳转到Thumb指令,以切换处理器状态。本节可以分为以下几个部分:
Thumb指令集编码
Thumb状态切换
编程模型
Thumb指令集特性
Thumb指令集概述
在任何时刻,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指令流。

Thumb指令集是ARM指令集的一个子集,并只能对限定的ARM寄存器进行操作。其编程模型如下图所示:
r0
r1
r2
r3
r4
r5
r6
r7
r8
r9
r10
r11
r12
SP(r13)
LR(r14)
PC(r15)
Lo寄存器
Hi寄存器
CPSR
有阴影的寄存器
访问时受到限制
编程模型
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不同。

16位Thumb指令集是从32位ARM指令集提取指令格式的,每条Thumb指令有相同处理器模型所对应的32位ARM指令。
数据处理指令;
转移指令;
Load/Store指令;

Thumb指令集详细介绍
Thumb数据处理指令包括一组高度优化且相当复杂的指令,范围涵盖编译器通常需要的大多数操作。ARM指令支持在单条指令中完成一个操作数的移位及一个ALU操作,但Thumb指令集将移位操作和ALU操作分离为不同的指令。本部分从以下几个方面介绍:
数据处理指令的分类
ARM指令与Thumb指令比较
Thumb数据处理指令
按照数据处理指令的功能,可以将其分为以下几类:
算术运算指令,它又分为以下几类:
移位和循环移位操作(ASR,LSL,LSR和ROR)
比较指令(CMP和CMN)
传送和取负指令(MOV,MVN和NEG)
测试指令(TST)
ADD与SUB—低寄存器加法和减法
ADD—高或低寄存器
ADD与SUB—SP
ADD—PC或SP相对偏移
ADC,SBC和MUL
数据处理指令
ARM指令有一个大的(24位)偏移域(offset field),这不可能在16位Thumb指令格式中表示。为此Thumb指令集有多种方法实现其子功能。本部分从以下几个方面介绍:
转移指令的汇编格式
转移指令的分类
Thumb转移指令