Привет, мне интересно, куда идет счетчик программ, когда программа возвращается из процедуры обслуживания прерываний? Я знаю, когда происходит событие прерывания, ПК вставляется в стек. Но какой адрес выталкивается в стек следующий один или же один (только выполняется один)? Когда мы имеемГде счетчик программ идет после возвращения обработчика прерываний?
first instruction;
interrupt event here;
go inside the ISR;
exit ISR;
second instruction;
ИЛИ
first instruction;
interrupt event here;
go inside the ISR
exit ISR;
first instruction;
Я имею в виду, делает точки ПК инструкции, выполняемой до входа ISR, или он переходит к следующей инструкции (после возврата из ISR)? Надеюсь, у вас есть идея.
Что это связано с C? – OldProgrammer
CPU вытолкнет адрес возврата следующей команды, которая должна быть выполнена после вызова функции. Или, если вы: нажимаете счетчик программ и увеличиваете его на одну команду. – Lundin
Это в значительной степени зависит от конкретного прерывания/исключения. Например: прерывание trap/syscall/программного обеспечения, очевидно, будет указывать адрес следующей инструкции, но исключение ошибки страницы/исключение TLB будет толкать адрес инструкции о нарушении, чтобы его можно было повторить. – ninjalj