处理器模式

用户模式(user)简称usr

快速中断模式(FIQ)简称fiq

外部中断模式(IRQ)简称irq

特权模式(supervisor)简称sve

数据访问终止模式(abort)简称abt

未定义指令后终止模式(undefined)简称und

除了用户模式以外,其他的模式成为特权模式,这些模式下,程序可以访问所有系统资源,也可以任意进行处理机模式

处理其模式可以通过软件进行控制,可以同国外部中断或者是异常处理进行切换,大多数的用户程序运行在用户模式下,这时候应用程序不能访问一些受系统保护的系统资源

ARM处理器共有37个寄存器

其中包括: 31个通用寄存器和程序计数器(pc)这些寄存器都是32位寄存器

      6个状态寄存器,这些寄存器都是32位寄存器,但是目前只是用了其中的12位

通用寄存器的分类

      未备份的寄存器:R0~R7

      备份寄存器P8~R14

      程序计数器PC,即R15

未备份的寄存器:RO~R&,对于每个未备份寄存器来说,在所有的处理器模式下指的都是同一个物理寄存器,在异常中断造成处理器模式切换,由于不同的处理其模式使用相同的物理地址,可能造成寄存器数据被破坏,未备份寄存器没有被系统用于别的特殊的用途,任何可采用通用寄存器的场合都可以用未备份寄存器

备份寄存器

    对于备份寄存器R8~R12来说,每个寄存器对应两个不同的物理地址,例如在快速终端模式下,R8和R9分别记做R8_fiq,R9_fiq,当使用用户模式下的寄存器的时候,寄存器R8he寄存器R9分别记作R8_usr,R9_usr,这两种情况使用的物理地址是不同的,系统没有见这几个寄存器用于任何的特殊用途

    对于备份的寄存器R13和R14来说,每个就处理器对应6个不同的物理地址,其中一个是用户模式和系统模式共用的,另外的5个是对应于其他5中处理机模式

寄存器R13在ARM模式下常用作堆栈指针,每一种异常模式都有自己的物理的值的R13,因此,初始化应用程序是应该初始化R13,使其指向异常模式专用的堆栈地址

寄存器R14又称为链接寄存器,在ARM体系结构中具有下面两种用途

  1:每一种处理器模式自己的物理地址R14中存放当前子程序的返回地址,当通过BL或者BLX指令调用子程序时,R14被设置成该子程序的返回地址

  2:但异常中断发生时,该异常模式特定的物理R14被设置成异常模式将要返回的地址,对于有些异常模式,R14的值可能与将返回的地址有一个常数的偏移,具体的返回方式与上面的子程序返回基本相同

  

程序计数器PC R15

  由于ARM采用了流水线机制,当正确读取了PC的值的时候,该值为当前指令地址值加8个字节(因为是32位的)因此一次处理的是32位(也就是4个字节)

  当成功向R15写入一个地址数值的时候,程序将跳转到改地址进行执行

程序状态寄存器CPSR

   CPSR(当前程序状态寄存器)可以在任何处理器模式下被访问,它包含了条件标志位,中断净值为,当前处理器模式标志以及其他的一些控制位,每一种模式下都有个专用的物理状态的状态寄存器(称为SPSR)但特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容,当异常中断退出时,可以用SPSR中保存的值来恢复CPSR

   

程序状态寄存器的格式如下:

N = 1表示结果为负数,N= 0表示结果为正数

z = 1表示结果为0,z = 0表示结果不为0

c表示有进位借位情况发生

v表示有溢出

I表示中断IRQ,F表示中断FIQ,T表示运行的状态,当T= 1表示运行在THUMB上,当T = 0 表示运行在ARM状态

后面的四位表示其中模式的选择

转载请注明链接地址:http://www.cnblogs.com/fengdashen/p/3724709.html

ARM处理机模式--内部寄存器的更多相关文章

  1. ARM(哈弗、冯氏结构、总线和IO访问、处理器状态和处理机模式)

    1.哈弗结构与冯氏结构 (1)区别: 是否有独立的存储架构和信号通道. (2)举例: 8086:冯氏结构(相同的存储相同的通道) STM32F103:哈弗结构(不同的存储.通道) 8051:改进的哈弗 ...

  2. ARM工作模式

    ARM工作模式 学习ARM的最好的资料是ARM公司发布的资料:ARM Architecture Reference Manual.pdf 找到章节:Programmers’ Model 由文档可知:A ...

  3. ARM处理器模式

    ARM处理器模式 ARM处理器共有7种运行模式: l  用户模式(User,usr):正常程序执行的模式 l  快速中断模式(FIQ,fiq):用于高速数据传输和通道处理 l  外部中断模式(IRQ, ...

  4. arm工作模式笔记

    linux用户态程序即应用程序,在user模式 linux内核运行在svc模式 arm七个模式: usr用户模式 fiq快速中断模式 irq普通中断模式 supervior   svc模式 abort ...

  5. 浅析arm的异常、中断和arm工作模式的联系

    说到异常向量,会让人联想到中断向量.其实,中断是属于异常的子集的,也就是说中断其实是异常其中的一种. 回到异常向量,他其实是一张表格,每个格子里存放的是一个地址,或者是一个跳转命令,不管是哪个,其目的 ...

  6. ARM编程模式和7钟工作模式

    一. ARM的基本设定 1.1. ARM 采用的是32位架构 1.2. ARM约定: a. Byte : 8 bits b. Halfword :16 bits (2 byte) c. Word : ...

  7. ARM工作模式寻址

    用户模式(User)                 usr 快速中断模式(FIQ) fiq 普通终端模式(IRQ)     irq 保护模式(Supervisor) svc 数据访问终止模式(Abo ...

  8. ARM体系的7种工作模式

    一.ARM体系的CPU有以下7种工作模式:   用户模式(usr)    大多数程序运行于用户模式 特权模式   系统模式(sys)   运行具有特权的操作系统任务 异常模式 中断模式(irq)   ...

  9. 【嵌入式开发】ARM 芯片简介 (ARM芯片类型 | ARM处理器工作模式 | ARM 寄存器 | ARM 寻址)

    : 12MHz 晶振 对应 405 ~ 532 MHz 处理速度; -- : 16K 指令缓存, 16K 数据缓存; -- : 32KB 指令缓存, 32KB 数据缓存; (3) 内存接口对比 : 提 ...

随机推荐

  1. lintcode 中等题:partition array 数组划分

    题目 数组划分 给出一个整数数组nums和一个整数k.划分数组(即移动数组nums中的元素),使得: 所有小于k的元素移到左边 所有大于等于k的元素移到右边 返回数组划分的位置,即数组中第一个位置i, ...

  2. java四种数组排序

    数组的四种排序 1.快速排序法Arrays.sort(); 用法1.sort(byte[] a)      对指定的 byte 型数组按数字升序进行排序. sort(byte[] a, int fro ...

  3. 对Memcached使用的总结和使用场景

    1.memcached是什么 Memcached 常被用来加速应用程序的处理,在这里,我们将着重于介绍将它部署于应用程序和环境中的最佳实践.这包括应该存储或不应存储哪些.如何处理数据的灵活分布以 及如 ...

  4. [转]useradd 与adduser的区别

    转自:Deit_Aaron的专栏 添加用户:useradd -m 用户名  然后设置密码  passwd 用户名 删除用户:userdel  -r  用户名 1. 在root权限下,useradd只是 ...

  5. PHP程序员的40点陋习,我几乎全部中枪

    1.不写注释 2.不使用可以提高生产效率的IDE工具 3.不使用版本控制 4.不按照编程规范写代码 5.不使用统一的方法 6.编码前不去思考和计划 7.在执行sql前不执行编码和安全检测 8.不使用测 ...

  6. 完美配置Tomcat的HTTPS

    Tomcat配置HTTPS的文章到处都有,过程也比较简单,随后文中会转一段过来. 但对于启用APR情况下报异常“java.lang.Exception: Connector attribute SSL ...

  7. sublime-text3插件安装

    sublime-text3和sublime-text2一样安装插件前都需要先安装,Package control ,然而安装Package control的代码和sublime-text2又不相同.如 ...

  8. 8天学通MongoDB——第六天 分片技术

    在mongodb里面存在另一种集群,就是分片技术,跟sql server的表分区类似,我们知道当数据量达到T级别的时候,我们的磁盘,内存 就吃不消了,针对这样的场景我们该如何应对. 一:分片 mong ...

  9. EJB3Persistence开发手册-原生SQL查询(NativeSQL)

    EJB3 QL对原生SQL做了非常好的支持.采用原生SQL做查询结果不但可以是象SQL中的返回列值,也可以是Entity类,甚至可以是两者的混合. EJB3 EntityManager接口定义了多个原 ...

  10. JAVA操作数据库插入中文表中显示乱码的解决方法

    String dbUrl = "jdbc:mysql://localhost:3306/BookDB?useUnicode=true&characterEncoding=GB2312 ...