Amiga. Вычислительная техника
Меню сайта
Главная
Amiga
Amiga Corporation
Модельный ряд
История развития
Аппаратная платформа
Операционные системы
Эмуляция
AMIGA # 1
Программирование на Ассемблере
Организация процессоров
Методы защиты информации
Компьютерные новеллы
Боятся ли компьютеры адского пламени?
Виртуальная реальность
Корпоративные сети
Телекоммуникационные сети
Архитектура ЭВМ
ЕС ЭВМ
Рождение ЭВМ
Компьютер
Гарвардская архитектура
Современные высокопроизводительные компьютеры
Дорога в будущее
Vista
Инфоpматика
ЭВМ
Операционные системы
Linux
Windows
Освой компьютер
Макинтош
Набор текста
Поколения
Компьютерная грамотность
Устройство компьютера
Железо
Графика
Звук
Ремонт
Сети
Программирование
Информационные технологии
Криптография
Микроэлектроника
Истории
 
 

Освой компьютер


Операционная система Amiga содержит функцию, с помощью
которой можно перейти в режим супервизора. Эта функция называется
SuperState (смещение -150 в exec.library) и не требует никаких параметров:
ExecBase = 4
SuperState = -150

...

move.l ExecBase,A6 ;базовый адрес exec.library

jsr SuperState(A6) ;переходим в режим супервизора

move.l D0,savesp ;сохраняем точку возврата

...
savesp: blk.l 1 ;место для хранения точки

;возврата
После вызова SuperState в D0 вовращается значение системного указателя
стека (SSP), а текущий указатель стека (SP) устанавливается на
пользовательский стек (USP). Это дает возможность работать с
пользовательским стеком в режиме супервизора.
Для возврата в режим пользователя используется функция UserState (смещение
-156 в exec.library), единственным параметром которой является значение
системного указателя стека, возвращенное функцией SuperState:
UserState = -156

...

move.l execbase,A6 ;базовый адрес exec.library

move.l savesp(PC),D0 ;восстанавливаем стек (SSP)

jsr UserState(A6) ;возврат в режим пользователя

Таким образом можно писать подпрограммы, которые будут выполняться в
режиме супервизора. Для этого нужно: вызвать SuperState, сохранить
возвращенный указатель стека, выполнить нужные действия, вызвать UserState
и выполнить команду RTS.
Возникает вопрос: как работает команда SuperState? Каким образом
операционная система переходит в режим супервизора? Опишем этот механизм:
Подпрограмма SuperState делает попытку обращения к регистрам статуса. В
результате возникает исключение (по вектору $20), и происходит переход на
подпрограмму-обработчик в режиме супервизора. Эта подпрограмма выясняет,
что исключение вызвано обращением к регистрам статуса из функции
SuperState, и осуществляет возврат без перехода в режим пользователя.
8.2.

 

AMIGA: ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕ.

 

© 2010 Amigo. All Rights Reserved
Создание сайтов ЕкатеринбургШаблоны сайтовПоиск товаров - справочник цен, каталог магазинов, прайс-листыБесплатные шаблоны дизайна компьютерных сайтов
Hosted by uCoz