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 在服务中断时会自动执行此操作。
我无法找到任何关于 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 在服务中断时会自动执行此操作。