Программирование на Ассемблере
Обычно этот бит
содержит 0 (режим пользователя). Содержимое регистра SR можно изменять
обычными командами (MOVE, AND, итд.), правда такие команды работают только
в режиме супервизора (являются привелегированными). Таким образом, можно
переключаться из режима супервизора в пользовательский режим командой
AND #DFFF,SR, которая очищает 13-й бит регистра статуса. Однако вместо
этого рекомендуется использовать функции операционной системы. Чем же отличаются друг от друга режимы процессора? Только что мы видели, что не все команды процессора доступны в режиме
пользователя. Например, реакцией процессора на команду MOVE xx,SR в
пользовательском режиме будет генерация исключения (exception) и прерывание
программы. В действительности, единственный путь переключения в режим
супервизора - через исключения, но об этом речь пойдет позже.
Второе отличие состоит в том, что для каждого из двух режимов используется
свой стек. В качестве указателя стека всегда используется регистр A7,
значение которого меняется каждый раз при смене режима (в пользовательском
режиме A7 указывает на стек пользователя (USP), а в режиме супервизора - на
стек супервизора (SSP)). Текущий режим процессора влияет и на доступ к памяти: при обращении к
внешним компонентам (в том числе и к памяти) процессор передает им
информацию о текущем режиме. Таким образом можно запретить пользователю
доступ к некоторым ячейкам памяти (чисто теоретически, так как в Amiga
данный механизм не используется). В режиме супервизора можно выполнять любые команды процессора и адресовать
всю память, поэтому операционная система в основном работает в режиме
супервизора. Это возможно при использовании механизма исключений. 2.3.2 Исключения (exceptions) Исключения MC680x0 похожи на прерывания в компьютерах на базе 6500.
Механизм исключений позволяет прерывать основную программу с вызовом
специальной подпрограммы - обработчика исключения. Когда возникает
исключение, происходит следующее: 1) Сохраняется содержимое регистра статуса
2) Очищаются биты S и T регистра статуса
3) Сохраняется содержимое регистров PC и SP
4) Из таблицы векторов исключений извлекается адрес обработчика
5) Вызывается сам обработчик исключения Таблица векторов исключений - это таблица адресов подпрограм-обработчиков
для всех возможных исключений.
|