ARM处理器编程模型与指令系统精编版

上传人:ahu****ng1 文档编号:142001537 上传时间:2020-08-15 格式:PPTX 页数:95 大小:1.53MB
返回 下载 相关 举报
ARM处理器编程模型与指令系统精编版_第1页
第1页 / 共95页
ARM处理器编程模型与指令系统精编版_第2页
第2页 / 共95页
ARM处理器编程模型与指令系统精编版_第3页
第3页 / 共95页
ARM处理器编程模型与指令系统精编版_第4页
第4页 / 共95页
ARM处理器编程模型与指令系统精编版_第5页
第5页 / 共95页
点击查看更多>>
资源描述

《ARM处理器编程模型与指令系统精编版》由会员分享,可在线阅读,更多相关《ARM处理器编程模型与指令系统精编版(95页珍藏版)》请在金锄头文库上搜索。

1、嵌入式系统设计,第四章 ARM处理器 编程模型与指令系统,主要内容,4.1 ARM微处理器的工作状态 4.2 ARM微处理器的运行模式 4.3 ARM体系结构的存储器格式 4.4 寄存器组织 4.5 ARM的异常 4.6 ARM微处理器的指令系统基础 4.7 ARM指令的寻址方式 4.8 ARM指令集 4.9 Thumb指令及应用,4.1 ARM微处理器的工作状态,从编程的角度看,ARM微处理器的工作状态一般有两种,并可在两种状态之间切换: ARM状态:此时处理器执行32位的字对齐的ARM指令 Thumb状态:此时处理器执行16位的、半字对齐的Thumb指令,4.1 ARM微处理器的工作状态,

2、ARM指令集和Thumb指令集均有切换处理器状态的指令,并可在两种工作状态之间切换,但ARM微处理器在开始执行代码时,应该处于ARM状态 进入ARM状态:当操作数寄存器的状态位(位0)为0时,执行BX指令时可以使微处理器从Thumb状态切换到ARM状态。 进入Thumb状态 :当操作数寄存器的状态位(位0)为1时,可以采用执行BX指令的方法,使微处理器从ARM状态切换到Thumb状态。,处理器的工作状态,例: 从ARM状态切换到Thumb状态: LDR R0,=Label+1 BX R0 从Thumb状态切换到ARM状态: LDR R0,=Label BX R0,主要内容,4.1 ARM微处理

3、器的工作状态 4.2 ARM微处理器的运行模式 4.3 ARM体系结构的存储器格式 4.4 寄存器组织 4.5 ARM的异常 4.6 ARM微处理器的指令系统基础 4.7 ARM指令的寻址方式 4.8 ARM指令集 4.9 Thumb指令及应用,4.2 ARM微处理器的运行模式,ARM微处理器支持7种运行模式,分别为: 1.用户模式(usr):ARM处理器正常的程序执行状态; 2.快速中断模式(fiq):用于高速数据传输或通道处理; 3.外部中断模式(irq):用于通用的中断处理; 4.管理模式(supervisor):操作系统使用的保护模式; 5.数据访问终止模式(abort):当数据或指令

4、预取终止时进入该模式,可用于虚拟存储及存储保护; 6.系统模式(system):运行具有特权的操作系统任务; 7.未定义指令中止模式(undefined):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。,4.2 ARM微处理器的运行模式,除用户模式以外,其余的所有6种模式称之为非用户模式,或特权模式(Privileged Modes); 除用户模式和系统模式以外的5种又称为异常模式(Exception Modes),常用于处理中断或异常,以及需要访问受保护的系统资源等情况。,处理器工作模式,ARM处理器有7种工作模式,主要内容,4.1 ARM微处理器的工作状态 4.2 AR

5、M微处理器的运行模式 4.3 ARM体系结构的存储器格式 4.4 寄存器组织 4.5 ARM的异常 4.6 ARM微处理器的指令系统基础 4.7 ARM指令的寻址方式 4.8 ARM指令集 4.9 Thumb指令及应用,4.3 ARM体系结构的存储器格式,ARM体系结构可以用两种方法存储字数据 大端格式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。,4.3 ARM体系结构的存储器格式,ARM体系结构可以用两种方法存储字数据 小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。,示例,A. 小端存储法(0 x01234

6、567),B. 大端存储法,主要内容,4.1 ARM微处理器的工作状态 4.2 ARM微处理器的运行模式 4.3 ARM体系结构的存储器格式 4.4 寄存器组织 4.5 ARM的异常 4.6 ARM微处理器的指令系统基础 4.7 ARM指令的寻址方式 4.8 ARM指令集 4.9 Thumb指令及应用,4.4 寄存器组织,4.4.1 ARM状态下的寄存器组织 通用寄存器 :通用寄存器包括R0R15,可以分为三类: 未分组寄存器R0R7 分组寄存器R8R14 程序计数器PC(R15),ARM状态下的寄存器组织,处理器工作模式,特权模式,处理器工作模式,用户和系统模式,ARM状态各模式下的寄存器,

7、ARM状态各模式下的寄存器,所有的37个寄存器,分成两大类: 31个通用32位寄存器; 6个状态寄存器。,ARM状态各模式下可以访问的寄存器,一般的通用寄存器,在汇编语言中寄存器R0R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用寄存器的指令。,一般的通用寄存器,其中R0R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。,一般的通用寄存器,寄存器R8R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器,一般的通用寄存器,寄存

8、器R8R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以加速FIQ的处理速度。,一般的通用寄存器,寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户和系统模式,其余5个分别用于5种异常模式。,堆栈指针寄存器R13(SP),寄存器R13常作为堆栈指针(SP)。在ARM指令集当中,没有以特殊方式使用R13的指令或其它功能,只是习惯上都这样使用。但是在Thumb指令集中存在使用R13的指令。,链接寄存器R14(LR),R14为链接寄存器(LR),在结构上有两个特殊功能: 在每种模式下,模式自身的R14版本用于保存子程序

9、返回地址; 当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。,4.4 寄存器组织,4.4.1 ARM状态下的寄存器组织 状态寄存器 当前程序状态寄存器(Current Program Status Register,CPSR) 备份的程序状态寄存器(Saved Program Status Register,SPSR),4.4 寄存器组织,程序状态寄存器格式,4.4 寄存器组织,4.4.2 Thumb状态下的寄存器组织 Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集,程序可以直接访问8个通用寄存器(R7R0)、程序计数器(PC)、堆栈指针

10、(SP)、连接寄存器(LR)和CPSR。,Thumb状态下的寄存器组织与ARM状态下的寄存器组织的关系,4.4 寄存器组织,Thumb状态下的寄存器组织与ARM状态下的寄存器组织的关系: Thumb状态下和ARM状态下的R0R7是相同的; Thumb状态下的SP对应于ARM状态下的R13; Thumb状态下的LR对应于ARM状态下的R14; Thumb状态下的程序计数器对应于ARM状态下R15; Thumb状态下和ARM状态下的CPSR和所有的SPSR是相同的,Thumb状态下的寄存器组织,主要内容,4.1 ARM微处理器的工作状态 4.2 ARM微处理器的运行模式 4.3 ARM体系结构的存

11、储器格式 4.4 寄存器组织 4.5 ARM的异常 4.6 ARM微处理器的指令系统基础 4.7 ARM指令的寻址方式 4.8 ARM指令集 4.9 Thumb指令及应用,4.5 ARM的异常,当正常的程序执行流程发生暂时的停止时,称之为异常 。 在处理异常之前,当前处理器的状态必须保留 处理器允许多个异常同时发生,它们将会按固定的优先级进行处理 异常与中断的概念并不完全等同,4.5 ARM的异常,4.5.1 ARM体系结构所支持的异常类型 在ARM体系结构中,异常中断用来处理软件中断、未定义指令陷阱(不是真正的“意外”事件)、系统复位功能(在逻辑上发生在程序执行前而不是程序执行中)和外部事件

12、。这些“不正常”事件都被划归“异常”,因为在处理器的控制机制中,它们都使用同样的流程进行异常处理。,4.5 ARM的异常,ARM异常按引起异常事件的不同可分为以下3类 : 指令执行引起的直接异常 指令执行引起的间接异常 外部产生的与指令流无关的异常,ARM体系结构所支持的异常,异常向量(Exception Vectors),4.5 ARM的异常,4.5.3 对异常的响应 ARM微处理器对异常的响应过程如下: 1、将下一条指令的地址存入相应的连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行; 2、将CPSR复制到相应的SPSR中; 3、设置当前状态寄存器CPSR中的相应位; 4

13、、给程序计数器(PC)强制赋值,使程序从相应的异常向量地址开始执行中断处理程序 ;,4.5 ARM的异常,4.5.4 从异常返回 ARM微处理器会执行以下操作从异常返回: 1、所有修改过的用户寄存器必须从处理程序的保护堆栈中恢复(出栈); 2、将连接寄存器LR的值减去相应的偏移量送到PC中; 3、将SPSR_mode寄存器内容复制回CPSR中,使得CPSR从相应的SPSR中恢复,即恢复被中断的程序工作状态; 4、若在进入异常处理时设置了中断禁止位,要在此清除。,4.5 ARM的异常,4.5.4 从异常返回 为确保指令总是按正确的操作模式读取,以保证存储器保护方案不被绕过,还有更加微妙的困难。因

14、此,ARM提供了2种返回处理机制 第一种机制:返回地址保存在R14 ; 第二种机制:异常处理程序把返回地址拷贝到堆栈(在这种情况下,SPSR也和PC一样必须保存),可使用一条多寄存器传送指令来恢复用户寄存器,并实现返回:,4.5 ARM的异常,4.5.5 各类异常的具体描述 1、未定义指令异常(Undefined Instruction ) 2、软件中断异常(Software Interrupt ) 3、中止异常(Abort ) 4、快速中断请求异常(Fast Interrupt Request,FIQ ) 5、外部中断请求异常(Interrupt Request,IRQ ),4.5 ARM的

15、异常,4.5.6 异常的进入/退出,4.5 ARM的异常,4.5.7 异常优先级(Exception Priorities),主要内容,4.1 ARM微处理器的工作状态 4.2 ARM微处理器的运行模式 4.3 ARM体系结构的存储器格式 4.4 寄存器组织 4.5 ARM的异常 4.6 ARM微处理器的指令系统基础 4.7 ARM指令的寻址方式 4.8 ARM指令集 4.9 Thumb指令及应用,4.6 ARM微处理器的指令系统基础,4.6.1 指令长度及数据类 ARM微处理器的指令长度可以是32位(在ARM状态下),也可以为16位(在Thumb状态下)。 ARM微处理器中支持字节(8位)、

16、半字(16位)、字(32位)三种数据类型,其中,字需要4字节对齐(地址的低两位为0)、半字需要2字节对齐(地址的最低位为0)。,4.6 ARM微处理器的指令系统基础,4.6.2 ARM微处理器的指令的分类与格式 指令分类简述 ARM微处理器指令集是加载/存储型的; ARM微处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器处理指令、Load/Store指令、协处理器指令和异常产生指令六大类;,4.6 ARM微处理器的指令系统基础,4.6.2 ARM微处理器的指令的分类与格式 指令格式 ARM指令使用的基本格式: S , ,,4.6 ARM微处理器的指令系统基础,4.6.2 ARM微处理器的指令的分类与格式 指令格式使用举例: LDR R0,R1 BEQ DATAEVEN ADDS R2,R1,#1 SUBNES R2,R1,#0

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号