【发布时间】:2014-03-17 13:15:58
【问题描述】:
我不是专家,只是一个业余爱好者。过去我在玩 68000 架构,我一直在想它的 TRAP 指令。该指令始终被描述为操作系统的“桥梁”(在某些系统中,但在这方面并未使用它,但这是另一回事)。这是如何实现的? TRAP 本身是一条特权指令,那么这个 OS 调用机制在用户模式下是如何工作的呢?我的猜测是触发了特权冲突异常,并且异常处理程序检查了导致异常的特定指令。如果它是一条 TRAP 指令,那么该指令将被简单地执行(也许 TRAP 的操作数,即 TRAP 向量号也会被检查),当然现在是在管理员模式下。我说的对吗?
【问题讨论】:
-
是的,你说得非常正确——这正是最初的 Mac OS(早在 1984 年)用于工具箱调用的机制。
-
那么为什么设计者要赋予这个指令特权呢?让它没有特权不是更简单吗?
-
我不知道——我的猜测是,当从用户空间或内核空间执行 TRAP 时,这允许不同的行为。否则行为上不会有差异。由于这是 30 年前设计的,我想现在可能很难找到最初的理由。
-
@Paul R,有道理,谢谢你的解释。
-
@PaulR:Mac OS 使用操作码 $A000-$AFFF,它们都调用相同的处理程序。然后,该处理程序获取堆叠的程序计数器值,在那里获取一个单词,并使用它从查找表中获取一个向量。
标签: operating-system motorola 68000 motorola-trap