Учебно-методический комплекс по дисциплине "Системное программное обеспечение". - davaiknam.ru o_O
Главная
Поиск по ключевым словам:
Похожие работы
Название работы Кол-во страниц Размер
Программа дисциплины «Системное программное обеспечение» 1 246.8kb.
Учебно-методический комплекс дисциплины "информатика" Ростов-на-Дону... 3 926.02kb.
Учебно-методический комплекс по дисциплине специальности: 033100... 1 358.41kb.
Учебно-методический комплекс по дисциплине Информационная безопасность... 5 964.9kb.
Учебно-методический комплекс по дисциплине «отечественная история» 5 1070.29kb.
Учебно-методический комплекс по дисциплине «Дифференциальная психология» 1 359.69kb.
Конспект лекций по дисциплине Операционные системы, среды и оболочки 4 841.87kb.
Отчет по курсовой работе по дисциплине " Системное Программное Обеспечение"... 11 683.94kb.
Учебно-методический комплекс материалов по дисциплине «Теория и практика... 3 390.01kb.
О. и быльченко Учебн о-методический комплекс по дисциплине «История»... 5 709.33kb.
Учебно-методический комплекс по дисциплине «Основы туризмологии»... 1 392.79kb.
Н. М. Макарова Перевод с английского и редакция 25 5384.32kb.
Направления изучения представлений о справедливости 1 202.17kb.

Учебно-методический комплекс по дисциплине "Системное программное обеспечение". - страница №1/20


АСЕМБЛЕР


Учебно-методический комплекс по дисциплине
"Системное программное обеспечение".


Составитель: доцент кафедры МОВС
Андрей Леонидович Бескин.

Информация о студентах


Анкетирование
База данных по студентам
Для студентов
Поиск по серверу

Отчетные материалы


Контрольные работы
Вопросы к экзамену и зачету
Примерные темы курсовых работ
Требования к техническому заданию
Дополнительная литература

Книга А. Бека "Введение в системное программирование"


Основные понятия
Ассемблеры
Загрузчики и программы связывания
Макропроцессоры
Операционные системы

Приложения к книге А. Бека "Введение в системное программирование"


Система команд УУМ и УУМ/ДС
Форматы команд и способы адресации УУМ/ДС и УММ
Программа COPY
Форматы объектных программ
Алгоритмы
Модельная программа,иллюстрирующая связывания и перемещения
Объектная программа для иллюстрации связывания и перемещения
Программа копирования файла
Условные предложения периода макрогенерации
Предложения условного перехода периода макрогенерации
Ключевые параметры макропроцессора для УУМ/ДС
Система прерывания УУМ/ДС
Процедуры ввода-вывода для УУМ/ДС
Процессы с запросами на ввод-вывод SVC-2 и SVC-0

FTP-архив


/labs - выполненные студентами работы
/binary - программы и дистрибутивы
/posobiya - пособия по курсу СПО
/office97 - оффис 97

Глава I. Основные понятия
В данной главе содержится различная информация, которая послужит нам основой при изучении последующих глав. В разд. 1.1 приводится обзор структуры книги и дается краткое введение в системное программное обеспечение. С разд. 1.2 начинается обсуждение взаимосвязи между системным программным обеспечением и структурой ЭВМ, которое продолжится в дальнейшем на протяжении всей книги. В разд. 1.3-1.7 даются общие сведения об архитектуре некоторых ЭВМ, используемых далее в качестве примеров. Более детальное обсуждение большинства вопросов, касающихся архитектуры машин, можно найти в работах Танненбаум [1984], Пфлигер [1982] и Гир [1981].

Основная часть данной главы содержит лишь общие сведения; многие детали опущены. Уровень детализации выбран таким, чтобы он обеспечивал лучшее понимание последующих глав. Не следует стремиться запоминать материал этой главы или углубляться в малозначительные вопросы. Вместо этого рекомендуется главу прочитать, а затем, при изучении последующих глав, использовать ее по мере необходимости в качестве справочника. Для читателей, желающих получить более подробную информацию по тем или иным вопросам, приводятся необходимые ссылки на литературу.


1.1. Введение

Эта книга является введением в проектирование различных компонентов системного программного обеспечения. Мы также рассмотрим реализацию такого программного обеспечения для некоторых реально существующих машин. Одна из центральных проблем книги - взаимосвязь системного программного обеспечения и архитектуры ЭВМ. Очевидно, что структура целевой машины оказывает влияние на выбор тех или иных решений, применяемых при создании системных программ. Некоторые аспекты такого влияния обсуждаются в разд. 1.2, другие будут рассмотрены в остальных главах книги.

Основные темы, которые рассматриваются в данной книге, касаются ассемблеров, загрузчиков, макропроцессоров, компиляторов и операционных систем. Каждая из гл. 2-6 посвящена одной из них. Предполагается, что с точки зрения пользователя читатель знаком со всеми рассматриваемыми здесь системными компонентами. В первую очередь в данной книге затрагиваются вопросы проектирования и реализации системного обеспечения. В гл. 7 содержится обзор некоторых других важных системных компонентов: систем управления базами данных, текстовых редакторов и систем интерактивной отладки.

Глубина изложения материала неодинакова. Главы, посвященные ассемблерам, загрузчикам и макропроцессорам, содержат достаточно детальную информацию, позволяющую подготовить читателя к тому, чтобы он мог самостоятельно написать данные компоненты программного обеспечения для реальных машин. С другой стороны, компиляторы и операционные системы являются слишком обширными темами, каждая из которых сама по себе не раз была объектом многих отдельных монографий и курсов. Очевидно, что невозможно полностью рассмотреть какую-либо из этих тем в одной главе сколько-нибудь разумного размера. Поэтому вместо этого предлагается введение в наиболее важные понятия и вопросы, относящиеся к компиляторам и операционным системам; особое внимание уделяется взаимосвязи программного обеспечения и структуры ЭВМ. Другие подтемы обсуждаются настолько, насколько позволяет место, и снабжаются ссылками на литературу, предназначенными для читателей, желающих изучить их более глубоко. Наша цель - дать хороший общий обзор рассматриваемых тем, который мог бы послужить в дальнейшем базой при изучении студентами специальных курсов по программированию. Аналогичный подход используется и при изложении материала гл. 7.


1.2. Системное программное обеспечение и структура ЭВМ.

Машинная зависимость является одной из характеристик, которая обычно отличает системное программное обеспечение от прикладного. Прикладная программа интересует нас главным образом с точки зрения решения некоторой задачи. При этом ЭВМ используется как инструмент и основное внимание сосредоточено на предметной стороне дела, а не на вычислительной системе. С другой стороны, системные программы предназначены скорее для обеспечения управления функционированием собственно ЭВМ, чем для решения какой-либо конкретной задачи. Вследствие этого они обычно тесно связаны со структурой машины, для которой созданы. Например, ассемблеры при переводе мнемонических инструкций в машинный код непосредственно учитывают форматы команд, способы адресации и другие аппаратные характеристики целевой машины. Компиляторы должны генерировать код на машинном языке, учитывая такие характеристики аппаратуры, как число и способ использования регистров или имеющиеся в наличии команды. Операционные системы непосредственно отвечают за управление практически всеми ресурсами вычислительной системы. В дальнейшем мы увидим много других примеров машинной зависимости.

С другой стороны, системное программное обеспечение имеет ряд аспектов, непосредственно не связанных с типом вычислительной системы, которую они поддерживают. Так, общая схема и алгоритмы ассемблера в основном не различаются для большинства ЭВМ. Некоторые из способов оптимизации объектного кода, используемые в компиляторах, не зависят от целевой машины (хотя существует также и машинно-зависимая оптимизация). Точно так же обычно не зависит от используемой ЭВМ и процесс установления связей между отдельно ассемблированными подпрограммами (Утверждение автора не совсем точно. Способы установления связей и передачи параметров между раздельно ассемблированными программами зависят очень заметно от структурных особенностей ЭВМ. - Прим, ред.). В последующих главах мы рассмотрим много других примеров аналогичных машинно-независимых характеристик.

Ввиду того что большинство системных программ машинно-зависимые, мы должны в процессе обучения рассматривать реальные машины и реальные компоненты программного обеспечения. Однако большинство реальных ЭВМ обладает определенными нестандартными или даже уникальными особенностями. Поэтому порой бывает трудно отличить действительно основные свойства программного обеспечения от свойств, зависящих исключительно от специфических особенностей конкретной машины. Для того чтобы обойти эти трудности, мы для изучения основных функций каждого из компонентов программного обеспечения будем использовать Упрощенную Учебную Машину (УУМ). УУМ представляет собой гипотетическую ЭВМ, при проектировании которой ставилась цель включить в нее аппаратные возможности, наиболее часто встречающиеся в реальных ЭВМ, исключив в то же время не относящиеся к существу дела или редко встречающиеся сложности. Таким образом, основные концепции каждого компонента системного программного обеспечения могут быть четко отделены от деталей реализации, связанных с конкретной машиной. Такой подход даст читателю отправную точку, с которой он может начать проектирование системного программного обеспечения для новой или ранее незнакомой ему ЭВМ.

Каждая основная глава книги (гл. 2-6) начинается с описания базовых функций обсуждаемого компонента системного обеспечения. Затем рассматриваются машинно-независимые функции, являющиеся расширением базовых. В заключительной части главы содержатся примеры реализации системных программ для реальных машин. Основные главы содержат следующие разделы:

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

2. Возможности, наличие и особенности которых тесно связаны с машинной архитектурой.

3. Другие возможности, которые имеют относительную машинную независимость и характерны для большинства реализаций программного обеспечения данного типа.

4. Основные варианты построения конкретных компонентов программного обеспечения (например, однопросмотровый разбор в сравнении с многопросмотровым).

5. Примеры реализации для реальных ЭВМ, в которых основное внимание уделяется нестандартным свойствам программного обеспечения, связанным с машинными характеристиками.

В данной главе содержатся краткие описания реальных ЭВМ. В дальнейшем эти машины будут использоваться для иллюстрации обсуждаемого материала. Сейчас мы предлагаем вам прочитать эти описания, а затем обращаться к ним, когда это необходимо, при изучении приводимых в каждой главе примеров.
1.3. Упрощенная учебная машина (УУМ)

В этом разделе мы опишем архитектуру нашей УУМ. Эта машина была спроектирована для того, чтобы проиллюстрировать наиболее часто встречающиеся аппаратные концепции и возможности, избегая в то же время большинства специфических особенностей, присущих реальным машинам.

Во многих отношениях УУМ похожа на типичную микро-ЭВМ. Подобно многим другим ЭВМ, которые выпускаются промышленностью, УУМ имеется в двух вариантах: в виде стандартной модели и модели УУМ/ДС (где индекс ДС означает с "дополнительными средствами" или, возможно, за "дополнительную стоимость"). Оба варианта спроектированы таким образом, чтобы обеспечивалась совместимость "снизу вверх". Это означает, что объектная программа для стандартной модели УУМ будет правильно выполняться и на УУМ/ДС. (Такая совместимость часто встречается в реально существующих семействах ЭВМ.) Характеристики стандартной модели УУМ описываются в разд. 1.3.1, а дополнительные возможности, включенные в УУМ/ДС, - в разд. 1.3.2.
1.3.1. Структура УУМ

Память

Оперативная память состоит из 8-разрядных байтов. Три последовательных байта составляют слово (24 разряда). УУМ имеет байтовую адресацию. Слова адресуются по адресу байта с наименьшим номером. Общий объем оперативной памяти составляет 32768 (215) байт.



Регистры

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


Имя Номер Назначение


А 0 Сумматор. Используется при выполнении

арифметических операций

X 1 Индексный регистр. Используется для адресации

L 2 Регистр связи. Команда перехода на подпрограмму

(JSUB) запоминает в этом регистре адрес возврата

PC 8 Счетчик команд. Данный регистр содержит адрес

очередной команды, выбираемой для исполнения

SW 9 Слово состояния. Данный регистр содержит

системную информацию, включая код условия

(СС- Conditional Code)



Форматы данных

Значения целого типа хранятся в виде 24-разрядного двоичного числа. Для представления отрицательных чисел используется дополнительный код. Значения символьного типа хранятся в 8-разрядном коде ASCII (см. приложение Б). Аппаратные средства для выполнения действий над числами с плавающей точкой в стандартной модели УУМ отсутствуют.



Форматы команд

Все машинные команды стандартной модели УУМ имеют следующий 24-разрядный формат:

8 1 15


код операции (ор)

Х

адрес (addr)

Признак x используется для задания индексного способа адресации.

Способы адресации

Имеются два способа адресации. В команде они задаются разрядом х. Правила вычисления целевого адреса, (target address) по адресу, заданному в команде, описываются ниже следующей таблицей. (Скобки используются для указания на содержимое регистра или ячейки оперативной памяти; например, (Х) обозначает содержимое регистра Х.)

Способ Признак Вычисление

адресации адресации целевого адреса ________________________________________________

Прямая x=0 TA=addr

Индексная x=l TA=addr+(X) ________________________________________________


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

Для решения большинства простых задач вполне достаточно базового набора команд УУМ. Он включает команды загрузки регистра и записи его содержимого и память (LDA, LDX, STA, STX и т. п.), а также команды целочисленной арифметики (ADD, SUB, MUL, DIV). Все арифметические команды выполняются над содержимым сумматора и содержимым слова оперативной памяти. Результат остается в сумматоре. Специальная команда (СОМР- СОМРаге) служит для сравнения значения, содержащегося в сумматоре, со значением, хранимым в слове оперативной памяти. Эта команда устанавливает код условия СС, являющийся признаком результата сравнения (<, =,>). Команды условного перехода (JLT, JEQ, JGT) проверяют установленное значение СС и выполняют соответствующую передачу управления. Две команды предназначены для организации взаимодействия подпрограмм: JSUВ - переход на подпрограмму с занесением адреса возврата в регистр L; RSUB - возврат по адресу, содержащемуся в регистре L.

В приложении А приведен полный список всех команд УУМ и УУМ/ДС с указанием их кодов и описанием выполняемых функций.

Средства ввода-вывода

В стандартной модели УУМ ввод и вывод выполняются побайтно. Для обмена используется самый правый байт сумматора. Каждому внешнему устройству присвоен уникальный 8-разрядный код. Существует три команды ввода-вывода. Каждая из этих команд в качестве своего операнда задает код устройства.

Команда проверки состояния устройства (TD- Test Device) проверяет готово ли требуемое устройство передать или принять очередной байт данных. Для индикации результата проверки используется код условия. Значение кода условия "<" указывает на готовность устройства к обмену; значение "=" означает, что устройство занято; значение ">" означает что данное устройство неисправно или не подключено к машине. Программа, желающая выполнить обмен, должна ждать до тех пор, пока устройство не будет готово, и только после этого она может выполнить команду чтения данных (RD - Read Data) или команду записи данных (WD - Write Data). Эта последовательность действий должна быть повторена для каждого байта данных, участвующего в обмене. Программа, показанная на рис. 2.1 (гл. 2), иллюстрирует такой способ выполнения обмена.

1.3.2. Структура УУМ/ДС

Память

Структура памяти УУМ/ДС аналогична описанной ранее для УУМ. Однако максимальный объем памяти доступной в УУМ/ДС составляет 1 Мбайт (220 байт). Такое увеличение требует изменения формата команд и способов адресации.



Регистры

Дополнительные регистры УУМ/ДС приведены в следующей таблице:


Имя Номер Назначение
В 3 Базовый регистр. Используется для

адресации

S 4 Общий рабочий регистр. Специального

назначения не имеет

Т 5 То же

F 6 Сумматор с плавающей точкой (48 разрядов)



Форматы данных

Наряду с форматами данных, которые есть в стандартной модели УУМ/ДС предоставляет дополнительный формат для данных с плавающей точкой:

1 11 36


S

порядок

Мантисса

Мантисса интерпретируется как число между 0 и 1, т. е. предполагается, что двоичная точка стоит непосредственно перед ее старшим разрядом. Для нормализованных чисел старший разряд мантиссы должен равняться единице. Порядок интерпретируется как двоичное целое без знака в диапазоне от 0 до 2047. Если порядок имеет значение е, а мантисса значение f, то абсолютная величина числа будет представлена как

f * 2 (e-1024)

Знак числа с плавающей точкой указывается с помощью значения разряда s (0 - положительное число, 1 - отрицательное число). Машинный нуль представляется в виде слова, содержащего нули во всех разрядах.



Форматы команд

Большой объем оперативной памяти, доступный в УУМ/ДС, означает что в общем случае 15-разрядного поля для задания адреса будет недостаточно. Таким образом, формат команд стандартной модели УУМ не подходит для УУМ/ДС. Существует два способа решения этой проблемы: либо использовать относительную адресацию, либо расширять адресное поле до 20 разрядов. Оба эти способа используются в УУМ/ДС (см. форматы 3 и 4 в нижеследующем описании). Кроме того, в УУМ/ДС имеются команды, которые вообще не ссылаются на оперативную память. Для этих команд используются форматы 1 и 2.

Ниже приведены форматы команд УУМ/ДС. Значения разрядов-признаков в форматах 3 и 4 будут рассмотрены при об суждении способов адресации. Разряд е используется для того, чтобы различать форматы 3 и 4 (е = О - формат 3, е =l- формат 4). В приложении А для каждой команды УУМ/ДС указан номер ее формата. Формат 1 (1 байт):

8


код операции (ор)

Формат 2 (2 байт):

8 4 4


код операции (ор)

r1

r2

Формат 3 (3 байт):

6 1 1 1 1 1 1 12



код операции (ор)

n

i

x

b

p

e

Смещение (disp)

Формат 4 (4 байт):

6 1 1 1 1 1 1 20



код операции (ор)

n

i

x

b

p

e

Адрес (addr)


Способы адресации

По сравнению со стандартной моделью в УУМ/ДС реализованы два новых способа относительной адресации, для которых используются командный формат 3. Их суть описывается следующей таблицей:

Способ Признаки Вычисление

адресации адресации целевого адреса


Относительно b = l TA = (B) + disp (0 <= disp>=

4095)


базы p = 0

Относительно b = 0 TA = (PC) + disp (-2048 <= disp

>= 2047)

счетчика р = 1

команд
Для способа адресации относительно базы поле смещения в командном формате 3 интерпретируется как 12-разрядное целое без знака. Для способа адресации относительно счетчика команд это поле интерпретируется как 12-разрядное целое со знаком, причем отрицательные величины представляются в дополнительном коде.

Если в командном формате 3 разряды b и р одновременно установлены в О, то в качестве целевого адреса используется значение поля disp. Для командного формата 4 разряды b и p должны оба равняться нулю, а целевой адрес берется из поля адреса команды. Мы будем называть такой способ прямой адресацией в отличие от относительной адресации, описанной выше.

Каждый из этих способов адресации может сочетаться с индексированием адреса. Признаком индексирования является значение разряда х, равное 1 , и в этом случае выражение для вычисления целевого адреса содержит дополнительное слагаемое (Х). Заметим, что стандартная модель УУМ использует только прямую адресацию (с индексированием или без него).

Разряды i и n в форматах 3 и 4 определяют способ использования целевого адреса. Если i = 1, а n = 0, то собственно значение целевого адреса используется в качестве операнда без выполнения каких-либо дополнительных ссылок в оперативную память. Такой способ задания операнда называется непосредственной адресацией. Если i = 0, а n = 1, то содержимое слова по целевому адресу используется в качестве адреса операнда. Такой способ называется косвенной адресацией. Если разряды i и n оба равны 0 или 1, то целевой адрес задает местонахождение операнда. Мы будем называть такой способ простой адресацией. При использовании непосредственной и косвенной адресации использование индексирования невозможно.





*

*

(В)=006000

*

*

(РС)=003000

*

*

(Х)=000090

*

*




3030

003600




*

*




*

*




*

*




3600

103000




*

*




*

*




*

*




*

*




*

*




6390

00С303




*

*




*

*




*

*




*

*




*

*




*

*




С303

003030




*

*




*

*




*

*




*

*







а



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



Команды УУМ/ДС, в которых не используется непосредственная или косвенная адресации, переводятся ассемблером в машинные коды, имеющие в разрядах i и n значение 1.Ассемблер стандартной модели УУМ устанавливает в этих разрядах нулевые значения (так как 8-разрядный код операций всех команд стандартной модели заканчивается кодом 00). В УУМ/ДС предусмотрены специальные аппаратные средства для обеспечения упомянутой ранее совместимости "снизу вверх". Если оба разряда i и n имеют нулевое значение, то разряды b, р, е рассматриваются как часть поля адреса


Машинная команда







Шестнадцатеричное

Двоичное




Значение, загружаемое в регистр А




ор

n

i

x

b

p

e

Смещение / адрес

Целевой адрес

032600

000000

1

1

0

0

1

0

0110 0000 0000

3600

103000

030300

000000

1

1

1

1

0

0

0011 0000 0000

6390

000303

022030

000000

1

0

0

0

1

0

0000 0011 0000

3030

103000

010030

000000

0

1

0

0

0

0

0000 0011 0000

30

000030

003600

000000

0

0

0

0

1

1

0110 0000 0000

3600

103000

03100303

000000

1

1

0

0

0

1

0000 1100 0011 0000 0011

0303

003030


б

Рис.1.1 Примеры команд и способов адресации УУМ/ДС.


(а не как признаки способа адресации). Таким образом, командный формат 3 становится идентичным командному формату, который используется в стандартной модели УУМ, что и обеспечивает требуемую совместимость.

На рис. 1.1 приведены примеры различных способов адресации, которые обеспечиваются УУМ/ДС. На рис. 1.1а показано содержимое регистров В, PC и X, а также некоторых специально подобранных ячеек оперативной памяти. Значения приведены в шестнадцатеричном виде. Машинный код команды загрузки сумматора, ее целевой адрес и загружаемое значения показаны на рис. 1.16. Вам следует тщательно изучить эти примеры и убедиться в том, что вы правильно понимаете различные способы адресации.

В приложении А дается полное описание всех форматов и способов адресации, используемых в УММ/ДС.


следующая страница >>



Науки нет, есть только науки. Николай Бердяев
ещё >>