您的位置 首页 知识

ARM微处理器寄存器和处理器形式

ARM处理器有二十七个寄存器,其中一些是在一定条件下使用的,所以一次只能使用十六个…寄存器0到寄存器7是通用寄存器并可以用做…

ARM 处理器有二十七个存放器,其间一些是在必定条件下运用的,所以一次只能运用十六个…

  • 存放器 0 到存放器 7 是通用存放器并能够用做任何意图。不象 80×86 处理器那样要求特定存放器被用做栈拜访,或许象 6502 那样把数学核算的成果放置到一个累加器中,ARM 处理器在存放器运用上是高度灵敏的。
  • 存放器 8 到 12 是通用存放器,但是在切换到 FIQ 形式的时分,运用它们的影子(shadow)存放器。
  • 存放器 13 典型的用做 OS 栈指针,但可被用做一个通用存放器。这是一个操作系统问题,不是一个处理器问题,所以假如你不运用栈,只需你今后康复它,你能够在你的代码中自在的占用(corrupt)它。每个处理器形式都有这个存放器的影子存放器。
  • 存放器 14 专职持有回来点的地址以便于写子例程。当你履行带衔接的分支的时分,把回来地址存储到 R14 中。同样在程序第一次运转的时分,把退出地址保存在 R14 中。R14 的一切实例有必要被保存到其他存放器中(不是实际上有用)或一个栈中。这个存放器在各个处理器形式下都有影子存放器。一旦现已保存了衔接地址,这个存放器就能够用做通用存放器了。
  • 存放器 15 是程序计数器。它除了持有指示程序当时运用的地址的二十六位数之外,还持有处理器的状况。

为更明晰一些… 供给下列图表:

User 形式  SVC 形式   IRQ 形式   FIQ 形式  APCSR0 ------- R0 ------- R0 ------- R0        a1R1 ------- R1 ------- R1 ------- R1        a2R2 ------- R2 ------- R2 ------- R2        a3R3 ------- R3 ------- R3 ------- R3        a4R4 ------- R4 ------- R4 ------- R4        v1R5 ------- R5 ------- R5 ------- R5        v2R6 ------- R6 ------- R6 ------- R6        v3R7 ------- R7 ------- R7 ------- R7        v4R8 ------- R8 ------- R8         R8_fiq    v5R9 ------- R9 ------- R9         R9_fiq    v6R10 ------ R10 ------ R10        R10_fiq   slR11 ------ R11 ------ R11        R11_fiq   fpR12 ------ R12 ------ R12        R12_fiq   ipR13        R13_svc    R13_irq    R13_fiq   spR14        R14_svc    R14_irq    R14_fiq   lr------------- R15 / PC -------------       pc 

程序计数器结构如下:

位   31  30  29  28  27  26  25------------2  1  0N   Z   C   V   I   F    程 序 计 数 器  S1 S0

下面是你想知道的”形式”,比方上面提及的”FIQ”形式。

  • 用户形式,运转应用程序的一般形式。约束你的内存拜访而且你不能直接读取硬件设备。
  • 超级用户形式(SVC 形式),首要用于 SWI(软件中止)和 OS(操作系统)。这个形式有额定的特权,答应你进一步操控核算机。例如,你有必要进入超级用户形式来读取一个插件(podule)。这不能在用户形式下完结。
  • 中止形式(IRQ 形式),用来处理建议中止的外设。这个形式也是有特权的。导致 IRQ 的设备有键盘、 VSync (在产生屏幕改写的时分)、IOC 定时器、串行口、硬盘、软盘、等等…
  • 快速中止形式(FIQ 形式),用来处理建议快速中止的外设。这个形式是有特权的。导致 FIQ 的设备有处理数据的软盘,串行端口(比方在 82C71x 机器上的 A5000) 和 Econet。

IRQ 和 FIQ 之间的区别是关于 FIQ 你有必要赶快处理你工作并脱离这个形式。IRQ 能够被 FIQ 所中止但 IRQ 不能中止 FIQ。为了使 FIQ 更快,所以有更多的影子存放器。FIQ 不能调用 SWI。FIQ 还有必要禁用中止。假如一个 FIQ 例程有必要从头启用中止,则它太慢了并应该是 IRQ 而不是 FIQ。 Phew!

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/276607.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部