ARM CPSR - 5位模式?

时间:2013-03-29 09:50:52

标签: architecture arm processor cpu-registers

我正在学习手臂架构。
1.我认为CPSR分配了5个比特来指定它正在执行的当前模式。其中我们只有大约6-7个不同的模式,其中3个比特就足够了。为什么我们有相同的5位?
2.系统/管理员模式有什么区别?操作系统执行它的代码的模式是什么?
3.此外,我想知道是否可以从用户模式切换到系统/管理员模式,手动拨打swi等等。什么会限制我这样做?
4.当我切换到管理员模式时,如何使用用户模式寄存器以及该模式已存在的存储寄存器?

1 个答案:

答案 0 :(得分:3)

  1. 为什么要将当前模式压缩到尽可能少的位?也许设计师觉得如果模式位更加分散,ARM的设计就更清晰了。此外,它不像CPSR中的备用位短缺。

    但是,您可能会注意到all 8 modes listed here have bit 4 set to 1。这是因为ARM6(和ARM7?)处理器支持四种额外的“26位”模式,以便与ARM2 / ARM3代码兼容。这四种26位模式的第4位设置为0,是用户,IRQ,FIQ和管理员模式的版本,可模拟ARM2 / ARM3行为。在ARM2 / ARM3中,没有CPSR和SPSR,N,Z,C,V,I和F标志位于PC的前六位,处理器模式位于PC的底部两位。由于26位模式未在我上面链接的文章中列出,我只能假设它们在以后的ARM中不受支持。

  2. 主管和系统模式不同,请参阅上面链接文章中的列表。至于操作系统使用哪种模式,这取决于操作系统。在系统模式出现之前的过去,将使用管理员模式。我不知道系统模式的出现是否改变了这一点。

  3. 我相信在没有使用SWI的情况下无法从用户模式切换到超级用户模式。这是故意的,它是一种安全/稳定性功能,可以防止没有合适权限的进程通过访问它们无法访问的内存位置而导致系统不稳定。

  4. 为什么要在管理员模式下使用库存用户模式寄存器?您无法从管理员模式获得的唯一用户模式寄存器是R13和R14。