Что происходит в архитектуре x86 при возникновении прерывания?
Я изучаю x86 и системы реального времени, и у меня есть вопрос, который:
Какие шаги x86 следует для обработки любого прерывания?
Ответ 1
Когда происходит прерывание, CPU выполняет следующие действия:
Ввести текущий адрес (содержимое указателя инструкций) в стек; также, нажимайте флажки процессора (но не все остальные регистры процессора).
Перейдите на адрес ISR (Routing Service Routine), который указан в таблице дескрипторов прерываний.
ISR должен сделать следующее:
Нажмите любые регистры, которые он намеревается изменить (или нажмите все регистры)
Обработать прерывание
Повторяющиеся прерывания
Попасть любые регистры, которые он нажал.
Используйте инструкции IRET, которые извлекают флаги CPU и значение указателя инструкций из стека (и, таким образом, возвращаются к тому, что выполнялось при возникновении прерывания).
Ответ 2
Начните здесь Таблица дескрипторов прерываний. В основном, когда происходит прерывание, управление потоком переходит к этой таблице, а затем к тому, что находится в этой таблице. Кроме того, я считаю, что все регистры выталкиваются, как только происходит прерывание, но я не на 100% уверен в этом, поскольку это было долгое и долгое время с тех пор, как я справился с этим.