Координация работ исполнительных элементов (арифметико-логических устройств, регистров и т.п.), страница 7


ПРЕРЫВАНИЯ И ИСКЛЮЧЕНИЯ

Источники прерываний – внешние: нажатие на кнопку или любое другое внешнее событие, которое надо обработать.

Источники исключений – внутреннее событие, процессор вынужден их обработать и остановить выполнение операции.

Вектор обработки прерывания – структура данных, который сообщает, где находится источник операции прерывания.

Процедуры обработки прерываний – в них хранятся адреса процедур и адреса команд. Эти процедуры должны быть короткими. Они ставят прерывания в очередь для выполнения.

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

- невытесняющиеся. Обработка происходит в выделенное ей время. Приложение само знает сколько ему надо на обработку.

- вытесняющая. Все решает операционная система. Используется прерывание, т.к. иначе приложение остановить нельзя.

УРОВЕНЬ ЯЗЫКА АССЕМБЛЕРА

ПРИМЕР ПРОГРАММЫ НА ЯЗЫКЕ АССЕМБЛЕР

Метка

Код операции

Операнды

Комментарии

FORMULA:

MOV

EAX, I

; регистр ЕАХ=1

ADD

EAX, J

; регистр EAX=I+J

MOV

N, EAX

; N=I+J

I

DW

3

; резервируем 4 байта и устанавливаем значение 3

J

DW

4

; резервируем 4 байта и устанавливаем значение 4

N

DW

0

; резервируем 4 байта и устанавливаем значение 0

ПРОЦЕСС АССЕМБЛИРОВАНИЯ

Первый проход – составление таблицы символов.

Метка

Код операции

Операнды

Комментарии

Длина

Счетчик адреса команд

MARIA:

MOV

EAX, I

EAX=I

5

100

MOV

EBX, J

EBX=J

6

105

ROBERTA:

MOV

ECX, К

ECX=K

6

111

IMUL

EAX, EAX

EAX=I*I

2

117

IMUL

EBX, EBX

EBX=J*J

3

119

IMUL

ECX, ECX

ECX=K*K

3

122

MARILYN:

ADD

EAX, EBX

EAX=H+J*J

2

125

ADD

EAX, ECX

EAX=I*I+J*J+K*K

2

127

STEPHANY:

JMP

DONE

Переход к DONE

5

129

Второй проход – составление объектного кода и таблицы символов.

 В результате получаем объектный код и таблицу символов (внешние или глобальные метки).


КОМПОНОВКА МОДУЛЕЙ

Этапы компоновщика:

1.  разрешает внешние ссылки: вместо неизвестной переменной ставит ее адреса.

2.  переделает относительные адреса в абсолютные.

СВЯЗЬ С БИБЛИОТЕЧНЫМИ ФУНКЦИЯМИ

Статическое связывание, осуществляемое до запуска программы:

– не позволяет загружать дополнительные модули;

– не позволяет использовать одну процедуру различными программами.

Динамическое связывание осуществляется во время выполнения программы.

В многозадачных ОС существует рад задач, которые требуется реализовать для многих приложений (например, работа с окнами). Для таких задач имеет смысл создавать библиотечные функции.

Существует 2 методы связи с библиотечными функциями:

1.  При статическом связывании функция компонуется вместе с программами. При этом при запуске нескольних приложений память загружается несколько раз одним и тем же кодом. При выходе новых версий библиотек нужно перекомпилировать все программы.

2.  Динамическое связывание происходит во время запуска программы. При этом необходимо некоторое время на связывание, возникает ряд проблем с нахождением функции, связыванием разных версий и разных библиотек.