MMIX:关于动态陷阱的问题

时间:2012-03-10 12:38:47

标签: exception architecture interrupt knuth mmix

我对MMIX的中断有一些疑问。 特殊寄存器rK的定义是“中断屏蔽寄存器”。 但它似乎以不同的方式对待不同的事件。

  • 用于I / O位(让我们调用**位:  这是正常情况。  当外部中断到来时,如果rK的**位为0,则rQ的**位将保持为'1',直到rK的**位设置为1,并且将发生陷阱。

  • 对于S-bit(程序):  加入mmix-pipe的源代码,即使rK的S位为0,也会发生安全异常。并且rK的S位将从0改为1。  因此,在正地址中,rK的S位应为1,而在负地址中,rK的S位不会产生任何影响。  只有rQ的S位用于告诉系统“存在安全问题”,rK的S位似乎没用。

  • 用于P-bit(程序):  令人遗憾的是“指令来自特权(负面)虚拟地址。”在mmix-doc.pdf中。  但如果PC处于负地址,则rQ的P位不会始终设置为1.(mmix-pipe也不会设置rQ的P位)。
    我可以证明一下:  如果在“恢复”insn之前执行的所有指令都将rQ的P位设置为1,则resume也会将rQ的P位设置为1。  因此,在恢复之后,'用户'insn将始终触发TRAP。那是不可能的。  因此,当禁止P异常时,rQ的P位不会设置为1。
     所以rK的P-bit不仅用作掩码,它还被用作“绕过异常检查的选项”。


以下是一些问题。

  • 为什么不将所有rK的位都作为中断的掩码?是否有任何理由使S / P位如此奇怪?

  • 如果rK的相应位为0,其他rQ的程序位(rwxnkb)是否设为1?

  • 在Neg-address中,不会发生跳闸,DVWIOUZX位刚刚发生后是否保持1?

0 个答案:

没有答案