Что происходит в архитектуре x86 при возникновении прерывания? - PullRequest
7 голосов
/ 24 мая 2010

Я изучаю x86 и системы реального времени, и у меня есть вопрос:

Какие шаги x86 выполняет для обработки любого прерывания?

Ответы [ 2 ]

8 голосов
/ 24 мая 2010

Когда происходит прерывание, ЦП выполняет следующие действия:

  • Вставить текущий адрес (содержимое указателя инструкций) в стек; также нажмите флаги процессора (но не все остальные регистры процессора)
  • Перейти к адресу ISR (подпрограммы обработки прерываний), который указан в таблице дескрипторов прерываний.

ISR должен делать следующее:

  • Нажмите любые регистры, которые он намерен изменить (или нажмите все регистры)
  • Обработка прерывания
  • Повторяемые прерывания
  • Вывести все регистры, которые он нажал
  • Используйте инструкции IRET, которые извлекают флаги процессора и значение указателя инструкций из стека (и, таким образом, возвращаются к тому, что выполнялось, когда произошло прерывание).
2 голосов
/ 24 мая 2010

Начните здесь с таблицы дескрипторов прерываний . По сути, когда происходит прерывание, управление потоком переходит к этой таблице, а затем к тому, что находится в этой таблице. Кроме того, я считаю, что все регистры выдвигаются, как только происходит прерывание, но я не уверен на 100% в этом, так как прошло много времени с тех пор, как я с этим справился.

...