68k 程序集:CPU 是否在中断时存储状态寄存器?

68k Assembly: Does the CPU does store the status register on interrupt?

我无法找到任何关于 MC68000 是否在外部中断期间保留其状态寄存器/CCR 的信息。我想如果 CPU 在条件分支之前立即中断,并且中断修改 CCR,那将是一个问题。现在我的中断代码如下所示:

            ORG     0000   ; Location of IPL6 vector
IPL6        MOVE.W  SR, -(SP) ; Is this line necessary?
            MOVE.L  D0, -(SP)
            ; Perform interrupt tasks here
            MOVE.L  (SP)+, D0
            MOVE.W  (SP)+, SR ; Is this line necessary?
            RTE               ; Return

我想知道 push/pop 堆栈中的 SR 是否需要指示的行,或者 CPU 是否在中断期间自动保存和恢复 SR。

是的,CPU 确实在中断时存储状态寄存器。从逻辑上讲,这是必需的,否则会发生您提到的问题。

MOTOROLA 第 6-84 页 M68000 系列 程序员参考手册 RTE 命令显示它在其他寄存器中恢复 SR 所以它必须以前存储过。

你的问题实际上是以一种不吉利的方式陈述的,因为你没有陈述由谁(CPU或代码):

,CCR 需要在中断期间被保留(出于您已经陈述的显而易见的原因)。

但是没有,程序员不需要显式保留它(就像在你的例子中不必要的那样),因为 CPU 在服务中断时会自动执行此操作。