- •В. Г. Баула Введение в архитектуру эвм и системы программирования
- •Предисловие
- •1. Понятие об архитектуре эвм
- •2. Машина Фон Неймана
- •2.1. Память
- •2.2. Устройство Управления
- •2.3. Арифметико–Логическое Устройство
- •2.4. Взаимодействие уу и алу
- •3. Учебная машина
- •3.1. Схема выполнения команд
- •3.2. Примеры программ для учебной машины.
- •3.2.1. Пример 1. Оператор присваивания.
- •3.2.2. Пример 2. Условный оператор.
- •3.2.3. Пример 3. Реализация цикла.
- •3.2.4. Пример 4. Работа с массивами.
- •3.3. Формальное описание учебной машины
- •4. Введение в архитектуру эвм
- •4.1. Адресность эвм
- •4.2. Сравнительный анализ эвм различной адресности
- •4.3. Дробно-адресная архитектура
- •4.4. Способы адресации
- •4.5. Многообразие форматов данных
- •4.6. Форматы команд
- •4.7. Базирование адресов
- •5. Понятие семейства эвм
- •6. Архитектура младшей модели семейства Intel
- •6.1. Память
- •6.2. Форматы данных
- •6.3. Вещественные числа
- •6.4. Целые числа
- •6.5. Сегментация памяти
- •6.6. Мнемонические обозначения регистров
- •6.7. Структура команд
- •6.8. Команды языка машины
- •6.8.1. Команды пересылки
- •6.8.2. Арифметические команды
- •7. Язык Ассемблера
- •7.1. Понятие о языке Ассемблера
- •7.2. Применение языка Ассемблера
- •7.3. Классификация предложений языка Ассемблер
- •7.4. Пример полной программы на Ассемблере
- •7.5. Переходы
- •7.6. Команды переходов
- •7.6.1. Команды безусловного перехода
- •7.6.2. Команды условного перехода
- •7.6.3. Команды цикла
- •7.7. Работа со стеком
- •7.8. Команды вызова процедуры и возврата из процедуры
- •7.9. Программирование процедур на Ассемблере
- •7.9.1. Стандартные соглашения о связях
- •8. Система прерываний.
- •9. Дополнительные возможности Ассемблера.
- •9.1. Строковые команды.
- •9.2. Логические команды.
- •9.3. Команды сдвига.
- •10. Модульное программирование
- •10.1. Модульное программирование на Ассемблере.
- •10.2. Схема работы редактора внешних связей.
- •10.3. Схема работы статического загрузчика.
- •10.4. Схема работы динамического загрузчика.
- •11. Понятие о системе программирования.
- •11.1. Компоненты системы программирования.
- •11.2. Характеристики исполняемых модулей.
- •11.2.1. Перемещаемые модули.
- •11.2.2. Повторно-выполняемые модули.
- •11.2.3. Повторно-входимые (реентерабельные) модули.
- •12. Макросредства языка Ассемблер.
- •12.1. Сравнение процедур и макроопределений.
- •13. Схема работы транслятора с языка Ассемблера.
- •14. Понятие о мультипрограммном режиме работы.
- •14.1. Требования к аппаратуре для обеспечения возможности работы в мультипрограммном режиме.
- •14.1.1. Система прерываний.
- •14.1.2. Механизм защиты памяти.
- •14.1.3. Аппарат привилегированных команд.
- •14.1.4. Таймер.
- •15. Архитектурные особенности современных эвм.
- •15.1. Конвейерные эвм.
- •15.2. Эвм различной архитектуры.
- •15.2.1. Архитектура эвм с общей шиной.
- •15.2.2. Достоинства и недостатки архитектуры с общей шиной.
- •15.2.3. Архитектура эвм с каналами ввода/вывода.
- •15.3. Уровни параллелизма.
- •Список литературы.
11.2. Характеристики исполняемых модулей.
Модульная программа состоит из отдельных исполняемых модулей, которые могут обладать некоторыми специфическими характеристиками, к рассмотрению которых мы сейчас и перейдём.
11.2.1. Перемещаемые модули.
Программные модули, обладающие свойством перемещаемости, могут быть во время счёта программы перенесены в другое место оперативной памяти так, что это не повлияет на правильную работу этих модулей.
Рассмотрим пример, когда это свойство исполняемых модулей может оказаться полезным. На рис. 10.7 показан вид рабочего поля, на котором находятся процедуры с именами A и Delta. Предположим, что динамическому загрузчику необходимо разместить на этом поле новый модуль, скажем процедуру с именем C12, которая имеет длину 8000 байт. Видно, что загрузчику не удастся это сделать, не удалив с рабочего поля какую-нибудь процедуру, так как, несмотря на то, что 10000 байт рабочего поля свободны, но это свободное пространство разбито на две части, ни в одну из которых не войдёт процедура C12.
В том случае, если модуль Delta является перемещаемым, его можно сдвинуть так, чтобы объединить свободные участки рабочего поля и разместить на нём новую процедуру C12. Сдвиг модуля в оперативной памяти является по существу операцией пересылки массива и это заведомо более быстрая операция, чем удаление модуля с рабочего поля (ведь его потом, скорее всего, придётся вернуть обратно).
Рассмотрим, какими свойствами должен обладать модуль на Ассемблере, чтобы быть перемещаемым. При перемещении сегментов модуля на другое место памяти должны поменяться адреса начал этих сегментов в сегментных регистрах. Отсюда вытекает следующее ограничение на перемещаемый модуль: он не должен загружать значения сегментных регистров (как следствие он не может использовать более 4 сегментов). Следовательно, в нашей архитектуре модуль не может выполнять следующие команды
Команды пересылки вида mov SR,op2 , то есть загружать в сегментный регистр значение длинного регистра r16 или слова из памяти m16. Напомним, что параметр SR может принмать значения сегментных регистров DS, ES и SS.
Команды чтения из стека в сегментный регистр pop SR .
Команды дальнего возврата ret в свой собственный сегмент кода, т.е. выполнять дальний возврат внутри самого модуля.
Кроме того, такой модуль нельзя перемещать в другое место памяти во время выполнения системного вызова по команде int i8 , так как возврат из процелуры-обработчика прерывания производится по команде iret , которая, как мы знаем, тоже загружает кодовый сегментный регистр.
Из этих свойств видно, что хорошим кандидатом на перемещаемый модуль является процедура на Ассемблере (понять это). На первых ЭВМ перемещаемость была очень полезным свойством выполняемого модуля, так как позволяла уменьшить операции обмена с медленной внешней памятью. На современных ЭВМ, однако, появился механизм виртуальной памяти, который позволяет использовать большое логическое адресное пространство, и перемещаемость перестала быть важной характеристикой исполняемых модулей. Виртуальную память Вы будете изучать в курсе "Системное программное обеспечение".