2

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

            ORG     $110000   ; 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

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

4

2 回答 2

5

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

MOTOROLA M68000 FAMILY Programmer's Reference Manual的第 6-84 页上,该RTE命令显示它SR在其他寄存器中恢复,因此它必须先前已存储。

于 2017-02-20T21:09:13.930 回答
0

您的问题实际上是以一种不幸的方式陈述的,因为您没有说明(CPU或代码):

是的,在中断期间需要保留CCR (出于您已说明的明显原因)。

但是,,程序员不需要明确地保留它(就像在您的示例中不必要地完成一样),因为 CPU 在提供中断时会自动执行它。

于 2017-03-10T17:17:34.160 回答