我无法找到有关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。
答案 0 :(得分:5)
是的,CPU确实在中断时存储状态寄存器。从逻辑上讲,这是需要的,或者像你提到的问题会发生。
在MOTOROLA
M68000 FAMILY
Programmer’s Reference Manual的第6-84页上,RTE
命令显示它在其他寄存器中恢复SR
,因此必须先存储它。
答案 1 :(得分:0)
你的问题实际上是以一种不吉利的方式陈述的,因为你没有通过谁(CPU或代码)陈述:
是,CCR 需要在中断期间保留(原因显而易见)。
但是没有,它不需要由程序员明确保存(就像你在你的例子中不必要地做的那样),因为CPU在服务中断时会自动执行此操作。