【问题标题】:Motorola 68K TRAP instruction as a bridge to OS摩托罗拉 68K TRAP 指令作为操作系统的桥梁
【发布时间】: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


【解决方案1】:

TRAP 指令没有特权,您可以从用户模式或管理员模式调用它。

TRAP 指令本身将强制 CPU 进入超级用户模式,然后根据您使用的 #xx 编号,将跳转到从内存区域 $80 到 $BC 的 16 个可能的回调中的任何一个。

TRAP 还将 PC 和 SR 值推送到堆栈,因此当最后一个函数调用返回时,它会返回到调用 TRAP 之前设置的任何模式。

【讨论】:

  • 对。我被大约 20 年前读过的一本书误导了。顺便说一句,在那本书中,其他一些指令被(错误)授予特权,例如chk。这对我来说没有多大意义。现在我突然想到要澄清这一点。我检查了摩托罗拉在线文档,当然你是对的。谢谢。
猜你喜欢
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多