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

Я интересно, если указанные линии, которые толкают/поп СР из стека не требуется, или если процессор автоматически сохраняет и восстанавливает СР во время прерывания.

ответ

5

Да, центральный процессор хранит регистр состояния при прерывании. Логически это необходимо, иначе могут возникнуть такие проблемы, как вы упомянули.

На странице 6-84 из MOTOROLA M68000 FAMILY Programmer’s Reference Manual команда RTE показывает, что она восстанавливает SR среди других регистров, поэтому она должна быть сохранена ранее.

0

Ваш вопрос на самом деле говорится в немного несчастливой пути, потому что вы не сообщают по которым (CPU или код):

Да, ЦКР необходимо быть сохранены во время прерывания (по очевидным причинам, которые вы указали).

Но нет, он не должен быть явно сохраняется программистом (как это сделано без необходимости в вашем примере), потому что процессор делает это автоматически, когда она служит прерывание.

+0

Достаточно честный, я немного изменил заголовок. – cjgriscom

 Смежные вопросы

  • Нет связанных вопросов^_^