-1

教授在课堂上说“[汇编]指令知道它是在特权模式还是用户模式下运行,因为如果产生了陷阱,那么它就是用户模式”。

首先,我假设它不能是任何陷阱,而是一个特定的陷阱,表示该命令不能在用户模式下运行。

其次,这似乎非常低效:运行整个命令并检查是否存在陷阱。为什么没有设置标志或其他东西?这不是说如果它不起作用,那么我们就知道有问题吗?所以真的没有办法检查吗?

4

1 回答 1

0

这取决于您的平台(即 ARM、x86 等...)。我主要使用 ARM,所以我的答案可能是 ARM 特定的,但我尽可能保持通用。

通常,CPU 会跟踪它所处的处理器模式,并在执行每条指令时对其进行检查。这是在硬件而不是软件中完成的,因此您不必担心它是否有效(留给硬件开发人员)。

如果指令因为没有足够的权限而被硬件困住,CPU 通常会在特权模式下从设定的位置开始执行。这个设置位置是一个陷阱处理程序,通常在内核中。然后,陷阱处理程序收集有关导致陷阱的原因的一些信息并适当地处理它。

于 2013-10-24T06:14:55.590 回答