微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM处理器模式及寄存器

ARM处理器模式及寄存器

时间:11-09 来源:互联网 点击:
一、ARM处理器模式

  • ARM微处理器支持7种运行模式,分别为:

用户模式(usr): ARM处理器正常的程序执行状态。

快速中断模式(fiq):用于高速数据传输或通道处理。

外部中断模式(irq):用于通用的中断处理。

管理模式(svc): 操作系统使用的保护模式。软中断和复位

数据访问中止模式(abt): 当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。

系统模式(sys): 运行具有特权的操作系统任务。

未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真

  • 除用户模式外的其余6种模式都称为特权模式,这些模式下,程序可以访问所有的系统资源,也可以任一进行处理器模式切换。其中,除系统模式外,其他5种模式又称为异常模式

二、ARM寄存器

(一)ARM工作状态下的寄存器组织

ARM处理器共有37个寄存器。其中包括:

  • 31个通用寄存器,包括程序计数器(PC)在内。这些寄存器都是32位寄存器
  • 6个32位状态寄存器。

表1各种处理器模式下的寄存器

用户模式

系统模式

特权模式

中止模式

未定义指令模式

外部中断模式

快速中断模式

R0

R0

R0

R0

R0

R0

R0

R1

R1

R1

R1

R1

R1

R1

R2

R2

R2

R2

R2

R2

R2

R3

R3

R3

R3

R3

R3

R3

R4

R4

R4

R4

R4

R4

R4

R5

R5

R5

R5

R5

R5

R5

R6

R6

R6

R6

R6

R6

R6

R8

R8

R8

R8

R8

R8

R8_fiq

R9

R9

R9

R9

R9

R9

R9_fiq

R10

R10

R10

R10

R10

R10

R10_fiq

R11

R11

R11

R11

R11

R11

R11_fiq

R12

R12

R12

R12

R12

R12

R12_fiq

R13

R13

R13_svc

R13_abt

R13_und

R13_inq

R13_fiq

R14

R14

R14_svc

R14_abt

R14_und

R14_inq

R14_fiq

PC

PC

PC

PC

PC

PC

PC

CPSR

CPSR

CPSR

SPSR_svc

CPSR

SPSR_abt

CPSR

SPSR_und

CPSR

SPSR_inq

CPSR

SPSR_fiq

  • 当发生异常中断时,处理器进入相应的异常模式。在每一种异常模式下都有相应的一组寄存器,供相应的异常处理程序使用,这样就可以保证在进入异常模式时,用户模式下的寄存器(保存了程序运行状态)不被破坏。
  • 系统模式不是通过异常进入的,他和用户模式具有完全一样的寄存器

1、通用寄存器

通用寄存器通常分为以下三类:

未备份寄存器:R0——R7

备份寄存器:R8——R14

程序计数器PC,即R15

未备份寄存器R0——R7:

R0~R7。在所有的处理器模式下指的都是同一个物理寄存器。在异常中断造成处理器模式切换时,由于不同的处理器模式使用相同的物理寄存器,可能造成寄存器中数据被破坏。

备份寄存器R8~R14:

(1)寄存器R8~R12

每个寄存器对应两个不同的物理寄存器。例如,当使用快速中断模式下的寄存器时,寄存器R8和寄存器R9分别记作R8_fiq、R9_fiq;当使用用户模式下的寄存器时,寄存器R8和寄存器R9分别记作R8_usr、R9_usr等。在这两种情况下使用的是不同的物理寄存器。系统没有将这几个寄存器用于任何的特殊用途,但是当中断处理非常简单,仅仅使用R8~R14寄存器时,FIQ处理程序可以不必执行保存和恢复中断现场的指令,从而可以使中断处理过程非常迅速。对于备份寄存器R13和R14来说,每个寄存器对应6个不同的物理寄存器,其中的一个是用户模式和系统模式共用的;另外的5个对应于其他5种处理器模式。

(2)寄存器R13在ARM中常用作栈指针(Stack Point,SP)

  • 在ARM指令集中,这只是一种习惯的用法,并没有任何指令强制性的使用R13作为栈指针,用户也可以使用其他的寄存器作为栈指针;而在Thumb指令集中,有一些指令强制性地使用R13作为栈指针。
  • 每一种异常模式拥有自己的物理的R13。应用程序初始化该R13,使其指向该异常模式专用的栈地址。当进入异常模式时,可以将需要使用的寄存器保存在R13所指的栈中;当退出异常处理程序时,将保存在R13所指的栈中的寄存器值弹出。这样就使异常处理程序不会破坏被其中断程序的运行现场。

(3)寄存器R14又被称为连接寄存器(Link Register,LR)

  • 在ARM体系中具有下面两种特殊的作用:每一种处理器模式自己的物理R14中存放在当前子程序的返回地址。当通过BL或BLX指令调用子程序时,R14被设置成该子程序的返回地址。在子程序中,当把R14的值到程序计数器PC中时,子程序即返回。
  • 当异常中断发生时,该异常模式特定的物理R14被设置成该异常模式将要返回的地址,对于有些异常模式,R14的值可能与将返回的地址有一个常数的偏移量。具体的返回方式与上面的子程序返回方式基本相同。
  • R14寄存器也可以作为通用寄存器使用。

程序计数器R15(PC)

  • 程序计数器R15又被记作PC。它虽然可以作为一般的通用寄存器使用,但是有一些指令在使用R15时有一些特殊限制。当违反了这些限制时,该指令执行的结果将是不可预料的。
  • 由于ARM采用了流水线机制,当正确读取了PC的值时,该值为当前指

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top