Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
на печать11.doc
Скачиваний:
41
Добавлен:
11.06.2015
Размер:
1.04 Mб
Скачать

19.Соглашение о связях Pascal.

Способы передачи параметров

- параметры скалярного типа (булевые, символьные, целые, перечисленные). Помещаются в стек, если параметр имеет длину 1 байт в стек помещается 2 байта. Младший – параметр, старший – неопределенное значение.

- вещественные параметры. Для real в стек помещается 6 байт. Для остальных – 2, 4 или 10 байт, начиная со старшего слова.

-указатели всех видов – в виде дальнего указателя; сначала слово, определяющее сегмент, потом слово, определяющее смещение.

-строки – в виде дальнего указателя в форме сегмент, смещение. Если строка передается как значение подпрограмма не должна ее изменять, иначе необходимо сделать ее локальную копию в стеке.

- массивы, структуры, объекты длиной 1, 2 и 4 байта передаются через стек во всех остальных случаях в стек помещается указатель.

-результат функций скалярного типа. 1 байт в AL, 2 – АХ, 4 – DX\AX. Результат типа real в 3-х регистрах, ах, вх, dx. Вещественный результат – в вершине стека сопроцессора. Результат типа строка размещается в спец области памяти, перед вызовом процедуры в стек автоматически помещается указатель на область выделенной памяти. В число параметров он не входит -> при возврате не должен извлекаться из стека.

.Код пролога для подпрограммы значит сохранить регистры.Пролог и эпилог для подпр-мы-стандартная посл-ть команд.Ими можно генерировать средствами Assemblera если сделать next об’явление:

{имя} PROC {язык}{тип}

Объявление : ARG {список} – список аргументов

LOCAL {список} – список лог-их переменных

USES {список}- список регистров используемых в процедуре.

В качестве {язык} можно указывать :

Pascal

C

CPP

STD CALL – нечто среднее между C и Pascal

NOLANGUAGE – никаких соглашений о связях не исп-ся.

Область стека занятая параметрами и другими данными, относ к одному вызову процедуры называется стековым кадром.

При паскаль вызове подпрограмма должна точно знать ск-ко есть параметров, чтобы добраться до первого из них и освоболить корректно стек, следовательно в Паскаль невозможно передать переменное ко-во параметров, оно должно быть фиксировано.

20.Понятие о прерывании; обработка прерываний, функции контроллера прерываний.

Прерывание – это важная процедура, которая позволяет изменить нормальную последовательность команд, выполняемых процессором.

Группа команд, выполняемых в ответ на запрос прерывания, называется подпрограммой обработки прерывания. Подпрограммы обработки прерываний во многом сходны с другими подпрограммами за исключением того, что они автоматически вызываются аппаратным механизмом вызова, а не командами вызова подпрограмм.

Для опроса устройств существует элемент системы, который называется контроллером прерываний или арбитр прерываний. Контроллер 8259 имеет 8 входов на запрос. Он допускает каскадное включение. Контроллер прерываний хранит информацию о текущем приоритете процессора. Приоритет – характеристика важности выполненяемой задачи. Каждой из линий приписан свой приоритет. Устройства в зависимости от важности, приписаны к своей линии. Чем больше номер линии, тем меньше приоритет. Запрос на каждую из линий поступает в виде +5В, или в виде импульса. Контроллер, получив запрос, сравнивает его с текущем приоритетом процесса. Если приоритет больше, запрос передается на процессор, процессор в ответ выдает подтверждение прерывания. При начальном прогоне контроллера каждой линии ставиться в соответствие код длиной в 8 бит. Контроллер, получив подтверждение, отдает процессору код. Процессор использует код как номер идентификатора прерывания. Если процессор завершает очередную команду, выдает 2-ое подтверждение прерывания контроллеру. На 2-ое прерывание контроллер фиксирует новый приоритет.

Прерывания могут генерироваться аппаратно, программно, процессором. В защищенном режиме обработчик прерываний выбирает таблицы прерываний IDT. Адрес таблицы в IDTR. Таблица может находиться в произвольном месте памяти; содержит до 256 элементов. Элементами таблицы является шлюзы задач, шлюзы прерываний и шлюзы ловушек. Шлюзы задач используются в том случае. Если для обработки прерывания от внешних устройств требуется выполнить большой объем действий. Шлюзы прерываний и шлюзы ловушек вызывают процедуры, которые выполняются в контексте текущей задачи. Шлюзы прерываний – для обслуживания внешних устройств в том случае, если на это требуется немного времени. Обработка прерываний ни чем не отличается от обработки в реальном режиме. Шлюзы ловушек – для обработки исключений, связанных с программой. Различие между прерываниями и ловушками: при входи в прерывание флаг разрешения прерывания сбрасывается, очищается, а при входе в ловушку нет.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]