2017-02-20 89 views
2

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

  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。

回答

5

是的,CPU确实将状态寄存器存储在中断上。从逻辑上讲,这是必要的,或者像你提到的那样发生。

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

0

你的问题是有点不走运的方式实际上是说,因为你没有说明由谁(CPU或代码)

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

没有,它并不需要是明确程序员(像它在你的例子做不必要的)保留,因为CPU自动执行它时,它供应的中断。

+0

够公平的,我稍微调整了标题。 – cjgriscom