Что происходит в архитектуре x86 при возникновении прерывания?

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

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

Ответы

Ответ 1

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

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

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

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

Ответ 2

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