2017-02-20 51 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