【问题标题】:68k Assembly: Does the CPU does store the status register on interrupt?68k 汇编:CPU 是否在中断时存储状态寄存器?
【发布时间】:2017-02-20 20:21:58
【问题描述】:

我无法找到任何关于 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。

【问题讨论】:

    标签: interrupt 68000 easy68k


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      但是,程序员不需要明确保存它(就像你的例子中不必要的那样),因为CPU会在它发生时自动执行它服务中断。

      【讨论】:

      • 很公平,我稍微调整了标题。
      猜你喜欢
      • 2021-03-25
      • 2013-01-10
      • 2013-07-26
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      • 2022-01-02
      • 1970-01-01
      • 2020-04-24
      相关资源
      最近更新 更多