【问题标题】:Differences between user mode and system mode in ARMARM中用户模式和系统模式的区别
【发布时间】:2019-02-11 15:44:13
【问题描述】:

以下摘录来自ARM system developer's guide

除了用户模式之外的每个处理器模式都可以通过写来改变模式 直接连接到 cpsr 的模式位。所有处理器模式,除了 系统模式有一组关联的存储寄存器,它们是 主要 16 个寄存器的子集。

我的问题是:

  1. 用户模式和系统模式是否相同?还是其他模式?
  2. 系统模式能否通过直接写入 cpsr 的模式位来更改模式?
  3. 用户模式是否有一组关联的存储寄存器,它们是主要 16 个寄存器的子集?

【问题讨论】:

  • 图片回答了你的第三个问题,系统和用户共享同一个寄存器。如果您阅读架构参考手册,您将了解用户可以做什么和不能做什么(以及系统)。用户模式和系统模式不一样,否则他们不会将它们列为两件事。除了访问通用寄存器之外,他们还有不同的权限。
  • 阅读架构参考手册,我建议您从 infocenter.arm.com 上较早的 armv5 架构参考手册开始,这些其他文档很有趣,但即使是 arm 中的其他文档也具有误导性和混淆性。
  • @old_timer 我认为除了系统模式之外,用户模式没有一组关联的存储寄存器,它们是主要 16 个寄存器的子集。
  • 如图所示,系统和用户使用同一组寄存器。

标签: arm embedded


【解决方案1】:
  1. 用户模式和系统模式是否相同?还是其他模式?

来自您链接的同一参考,2.2.1 处理器模式部分

系统模式是用户模式的一个特殊版本,它允许完全 对cpsr的读写权限


  1. 系统模式能否通过直接写入 cpsr 的模式位来更改模式?

见上文。


  1. 用户模式是否有一组关联的存储寄存器,它们是主要 16 个寄存器的子集?

它使用与系统模式相同的寄存器;只是 CPSR 访问不同。

【讨论】:

  • 根据您在第三季度的回答。我相信这本书提供了错误的信息。它应该说“除了系统模式和用户模式之外的所有处理器模式都有一组关联的分组寄存器,它们是主要 16 个寄存器的子集。”
  • @AndyLin :这是一个语义问题。文字是正确的,但可能不清楚。是你对它的解释不正确。正常的寄存器组是用户模式组,系统模式不会切换到备用组,因此在这个意义上没有自己的寄存器。该图可能提供了清晰的信息?
【解决方案2】:
  1. 用户模式和系统模式是否相同?还是其他模式?

此外,来自您链接的同一参考,第 2.1 节 注册

处理器可以在七种不同的模式下运行,我们将 稍后介绍。

您可以推断系统模式和用户模式是不同的模式。

  1. 系统模式能否通过直接写入 cpsr 的模式位来更改模式?

由于系统模式和用户模式是不同的模式,系统模式肯定可以通过直接写入cpsr的模式位来改变模式。根据您在图片下方的参考。

  1. 用户模式是否有一组关联的存储寄存器,它们是主要 16 个寄存器的子集?

不,它没有。

我坚持认为这是手册的错字。

【讨论】:

    猜你喜欢
    • 2019-02-12
    • 2012-12-15
    • 2022-12-10
    • 1970-01-01
    • 2017-12-19
    • 2015-01-27
    • 2023-03-17
    • 1970-01-01
    • 2017-09-02
    相关资源
    最近更新 更多