Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник ОЭВМ Трусфус.doc
Скачиваний:
124
Добавлен:
12.03.2015
Размер:
4.82 Mб
Скачать

4.2. Программная модель процессоров эвм vax-11 (см 1700)

Разрядность (ширина) тракта обработки 32.

Адресное пространство V – 232 (4 Гбайт),

Структура VAX-11

Структура VAX-11 представлена на рис. 4.5.

Процессор соединен с оперативной памятью и сервисным сопроцессором через быстродействующий локальный интерфейс, а с внешними устройствами – через два стандартных интерфейса " Unibus" (для медленнодействующих устройств) и Masbus (для быстродействующих устройств).

Сервисная система на основе РС используется системным оператором и инженером для управления и тестирования системы.

Регистровый файл – шестнадцать 32-разрядных регистров общего назначения (рис.4.6)

Регистры с нулевого по одиннадцатый не специализированы.

Регистры 12 и 13 по умолчанию используются для передачи параметров в подпрограмму.

Регистр 14 по умолчанию используется как указатель аппаратного стека (SP). Используется в процедурах прерывания.

Регистр 15 используется в качестве указателя (счетчика) команд (РС).

31 0

0

РОН

1

РОН

РОН

12

Указатель аргумента

13

Указатель пространства

14

Указатель аппаратного стека SP

15

Счетчик команд PC

Рис. 4.6. Регистры общего назначения

Операнды:

  • B (байт) = 8 бит,

  • W (слово) = 16 бит,

  • L (двойное слово) = 32 бит,

  • Q (учетверенное слово) = 64 бит.

Структура обозначения кода операции ( на языке ассемблера):

Операцияразрядность операнда.

Примеры:

  • MOVB – пересылка байт,

  • MOVW – пересылка слова,

  • MOVL – пересылка двойного слова,

  • MOVQ – пересылка учетверенного слова.

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

Примеры:

ADDL A1, A2 ;сложение двойных слов (двухадресный вариант)

ADDL3 A1, A2, A3 ;сложение двойных слов (трехадресный вариант).

Команды содержат код операции и до трех полей адреса (рис.4.7.).

Функции кода операции:

  • задает операцию,

  • задает размер операнда,

  • задает количество адресов.

Поле адреса задает адрес операнда.

Каждое поле адреса содержит одну или две спецификации.

Спецификация – это "1-й байт" и, возможно, смещение (до 4 байт).

"1-й байт" содержит поле номера режима задания адреса (первые 4 бита) и поле номера РОНа (вторые 4 бита), содержимое которого используется при формировании адреса операнда.

Режимы адресации адреса

Короткий операнд. Номера режима от 0000 до 0011 интерпретируются как старшие цифры короткого непосредственного операнда (число со знаком), младшими цифрами которого являются цифры поля номера РОНа:

0000ХХХХ

0001ХХХХ

0010ХХХХ

0011ХХХХ,

где Х- цифры поля номера РОНа.

Пример:

Команда на ассемблере:

movW # –5, R1; пересылка слова FFFB (–5) в R1

Запись числа –5 в байте режима: 0011 1011. Цифра, выделенная подчеркиванием – знак короткого литерала (числа).

0100 – индексная адресация. Используется для адресации элементов одномерного массива. Адрес элемента массива вычисляется как:

Адрес элемент массива = База + Индекс  размер операнда (в байтах), где:

  • База – базовый адрес массива. Задается полями второй спецификации. При этом для задания базового адреса массива может использоваться любой режим, кроме индексного и короткого литерала.

  • Индекс (номер элемента массива) – это содержимое РОНа, заданного полем номера РОНа в первой спецификации поля адреса.

  • размер операнда (элемента массива – 1, 2, 4, 8 байт) задается кодом операции.

На ассемблере указывают базовый адрес, заданный второй спецификацией, а за ним в квадратных скобках – РОН, содержимое которого используется в качестве индекса.

Пример: MOVQ #27[R2], R0 – скопировать в R0 учетверенное слово (Q – 8 байт) по адресу, равному 27 (базовый адрес, заданный коротким операндом) плюс содержимое R2 (индекс), умноженное на длину операнда (8 байт), т.е. адрес источника вычисляется как 27+R28.

Индексная адресация – это единственный случай, когда для задания операнда используются две спецификации. Поле адреса в этом случае может содержать максимально возможное число байт – 6 (один байт в первой спецификации и пять байт – первый байт и 4 байта смещения – во второй спецификации).

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

0101 – регистровая адресация – R1. Операнд находится в РОНе (R1), заданном полем номера РОНа в первом байте первой спецификации адресного поля. Для операнда используется только один байт – первой байт первой спецификации.

0110 – косвенно-регистровая адресация – (R1). Адрес операнда определяется содержимым РОНа, заданного полем номером РОНа в первом байте первой спецификации адресного поля. Для операнда используется только один байт – первой байт первой спецификации.

0111 – автоинкрементная адресация(R1)+. Адрес операнда определяется содержимым РОНа, заданного полем номера РОНа в первом байте первой спецификации адресного поля. После использования адреса, содержимое указанного РОНа увеличивается на длину операнда (в байтах). Для задания операнда используется только один байт – первый байт первой спецификации.

1000 –косвенная автоинкрементная адресация – @(R1)+. Адрес адреса операнда определяется содержимым РОНа, заданного полем номера РОНа в первом байте первой спецификации адресного поля. После использования адреса содержимое указанного РОНа увеличивается на четыре байта (размерность адреса). Для задания операнда используется только один байт – первый байт первой спецификации.

1001автодекрементная адресация – -(R1). Содержимое заданного полем номера РОНа в первом байте первой спецификации адресного поля уменьшается на длину операнда (в байтах), после чего используется в качестве адреса операнда. Для задания операнда используется только один байт – первый байт первой спецификации.

В отличие от адресации операндов в процессоре PDP-11, в VAX-11 не используется косвенная автодекрементная адресация.

Относительные адресации

Имеются 3 модификации относительной адресации:

  • 1010 – относительно байтовая адресация, используется один байт смещения. Пример: CLRW 235B(R1). Очистить два байта (слово) по адресу, равному сумме содержимого R1 и байта смещения – 0EBh (253),

  • 1100 – относительно словарная адресация, используется два байта смещения. Пример: CLRW 235W(R1). Очистить два байта (слово) по адресу, равному сумме содержимого R1 и двух байт смещения – 00EBh (253),

  • 1110 – относительно двухсловная адресация, используется два байта смещения. Пример: CLRW 235L(R1). Очистить два байта (слово) по адресу, равному сумме содержимого R1 и четырех байт смещения – 0000 00EBh (253).

Косвенно относительные адресации

Имеются 3 модификации косвенно относительной адресации:

  • 1011 – относительно байтовая адресация, используется один байт смещения. Пример: CLRW 235B(R1) – Очистить слово, адрес которого равен сумме содержимого R1 и байта смещения – 0EBh (253),

  • 1101 – относительно словарная адресация, используется два байта смещения. Пример: CLRW 235W(R1) – Очистить слово, адрес которого равен сумме содержимого R1 и двух байтов смещения – 00EBh (253),

  • 1111относительно двухсловная адресация, используется два байта смещения. Пример: CLRW 235L(R1) – Очистить слово, адрес которой равен сумме содержимого R1 и четырех байтов смещения – 0000 00EBh (253).

Адресация с использованием счетчика команд

Использование R15 (РС – счетчика команд) позволяет получать четыре дополнительные группы адресаций:

  • Непосредственный операнд (#A). Непосредственный операнд находится в спецификации непосредственно в команде. Задается режимом (РС)+ (7-й режим адресации, автоувеличение с использованием счетчика команд).

  • Абсолютный адрес (@#A). Адрес операнда находится в спецификации непосредственно в команде. Задается режимом @(РС)+ (9-й режим адресации, косвенное автоувеличение с использованием счетчика команд).

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

  1. Код операции XB (PC) (10-й режим адресации, относительная байтовая адресация с использованием счетчика команд).

  2. Код операции XW (PC) (12-й режим адресации, относительная словарная адресация с использованием счетчика команд).

  3. Код операции XL (PC) (14-й режим адресации, относительная двухсловная адресация с использованием счетчика команд).

  • Косвенно относительный адрес (). Адрес адреса операнда задается относительно счетчика команд. Формируется сложением содержимого "продвинутого" счетчика команд со смещением, которое следует в команде за спецификатором операнда. Смещение, в зависимости от режима, может быть байтом, словом или двойным словом. Ассемблируется в виде:

  1. Код операции XB (PC) (11-й режим адресации, относительная байтовая адресация с использованием счетчика команд).

  2. Код операции XW (PC) (13-й режим адресации, относительная словарная адресация с использованием счетчика команд).

  3. Код операции XL (PC) (15-й режим адресации, относительная двухсловная адресация с использованием счетчика команд).

Вопросы для самопроверки:

    1. Разрядность VAX-11.

    2. Количество РОН в VAX-11.

    3. Разрядность операндов в VAX-11.

    4. Максимальное количество адресов в VAX-11.

    5. Структура поля адреса в командах VAX-11.

    6. Структура "1-го первого байта" в спецификации адресного поля команд VAX-11.

    7. Задание адреса в режиме индексной адресации.

    8. Действие и алгоритм вычисления адреса источника, заданные командой MOVQ#27 [R2], R0.