Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Так как обычно функции сохраняют часть регистров в стек,
то можно ли отложить переключение процесса до входа/выхода из функции и сэкономить на сохранении используемых регистров?
Например, по получении прерывания от таймера настроить процессор на выдачу прерывания перед/после инструкций call/ret.
Хочу заметить, что стек растет вверх(т.е. ESP уменьшается), это значит, что последний регистр, который вы сохранили в стек будет лежать по адресу ESP, предпоследний — ESP +4 и т.п:
Для начала хочу заметить, что к примеру, в обработчике локальные переменные хранятся в стеке, а значит после входа в обработчик компилятор портит нам esp. Чтобы такого не произошло создадим переменную с абсолютным адресом, и перед вызовом обработчика будем засовывать ESP туда.
Написание ОС: Многозадачность