Косвенный режим автоувеличения с использованием счетчика команд (3)

Теоретические основы

Программная модель процессоров семейства PDP-11

Отображение оперативной памяти.

Семейства ЭВМ – это первый ряд 16-тибитных программно совместимых моделей ЭВМ от микро до супер-мини. Для многих последующих высокопроизводительных ЭВМ архитектура PDP-11 стала стартовой. Корпорация DEC, развивая эту архитектуру, стала лидирующей на рынке мощных 64-битных рабочих станций на базе VAX-кластеров и моделей МП серии Alpha.

Максимальный размер математической памяти моделей ЭВМ PDP-11 – 216 = 65 536 байт (64 Кбайт) или 215= 32 768 двухбайтных слов (32 К). Но максимальный размер физической памяти в четыре раза больше и может достигать до – 218 = 262 144 байта (256 Кбайт) или 131 072 слова (256 К).

Адресация бит в байтах и словах – обратная (с младших разрядов), слова и двойные слова адресуются по номеру байта в слове (двойном слове).

Структура и адресация бит в байте и слов в физической памяти представлена на рис. 4.1.

  Слова     Байты  
номера байт номера байт   номера байт
старший младший   младший
старший младший   старший
старший младший   * * *  
старший младший   * * *  
* * * * * *     * * *  
65 533 старший младший 65 532   * * *  
65 535 старший младший 65 534   * * *  
          * * *  
          * * *  
          младший 65 534
          старший 65 535
Рис. 4.1. Структура и адресация бит в байте и слов в памяти
                   

Трансляция математических адресов производится с помощью диспетчера памяти (вариант реализации виртуальной памяти). Превышение объема физической памяти над математической памятью позволяет реализовывать многопрограммные режимы работы.

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

Для адресов портов предусмотрено 4 Кбайт старших адресов пространство памяти.

Регистровый файл.

В регистровый файл входят:

· регистры общего назначения (РОНы),

· регистр слова состояния процессора.

Регистры общего назначения (РОНы). ЭТО– 8 шестнадцатибитных регистра, шесть из них используются только при явной адресации, два (R6 и R7) специализированы и кроме явной адресации могут использоваться по умолчанию.

R6 – шестнадцатибитный регистр указателя аппаратного стека SP (Stack Pointer). Используется аппаратурой процессора при прерываниях и передаче управления для сохранения адреса и состояния программы.

R7– шестнадцатибитный счетчик команд PC (Program Counter). Вычисляет адрес следующей команды. Доступен программам пользователя по записи и чтению.

Регистр слова состояния процессора.

Шестнадцатибитный регистр слова состояния процессора PS (Processor Status) (рис. 4.2) содержит поля:

· Текущего и предыдущего режима работы (биты с 12 по 15). Поля задают режимы: пользователь/система. Используются механизмом защиты программ. В режиме «пользователь» запрещено использование ряда "привилегированных" команд.

· Приоритет процессора (биты с пятого по седьмой). Задают приоритет процессора. Процессор может иметь приоритет от 0 до 7. Приоритет процессора используется в арбитраже системного интерфейса как уровень маскирования запросов прерывания от внешних устройств.

· Бит слежения Т (Trap, четвертый бит). При включенном бите T – после выполнении каждой команды (кроме RTT), производится процедура прерывания.

· Четыре бита кода условий (биты с нулевого по третий):

1. С – "перенос",

2. V – "переполнение",

3. Z – "результат нулевой",

4. N – "результат отрицательный".

Коды условий используются при выполнении команд ветвления.

Текущий режим Послед. режим   Приоритет процессора T N Z V C
Рис. 4.2. Структура регистра слова состояния процессора

Структура данных.

Данные представляются в двух видах: данные со знаком и данные без знака. Данные со знаком могут быть в форме с фиксированной запятой или в форме с плавающей запятой. Данные без знака – это адреса или алфавитно-цифровые символы.

Данные со знаком с фиксированной запятой – это целые числа в виде байтов, слов или двойных слов. Старший бит числа – знаковый. Отрицательные числа представлены в дополнительном коде.

Данные со знаком с плавающей запятой обрабатывается специальным сопроцессором обработки чисел с плавающей запятой (ППЗ). В ППЗ определены два формата:

· одинарной точности – двойное слово: знак мантиссы (1бит), сдвинутый порядок (1 байт), мантисса (3 байта),

· двойной точности – учетверенное слово: знак мантиссы (1бит), сдвинутый порядок (1 байт), мантисса (7 байт).

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

Структура команд.

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

По количеству адресов операндов ЭВМ PDP-11 использует безадресные, одноадресные и двухадресные команды. Основной (полный) формат имеют двухадресные команды (рис.4.3). Они содержат поля:

· кода операции,

· адреса операнда источника,

· адреса операнда приемника.

Код операции адрес источника адрес приемника
режим РОН режим РОН
Рис.4.3. Структура двухадресной команды

Код операции. Код операции задает операцию, структуру команды и размер операнда.

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

Из возможных 16 кодов четырехбитового кода операции для кодирования операции используются только четыре. Остальные коды используются для обозначения других дополнительных структур команд. Эти дополнительные форматы команд представлены на рис. 4.4.

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

 
Код операции R – источник адрес приемника a
Код операции R – источник смещение b
Код операции адрес приемника c
Код операции R – источник d
Код операции e
Код операции Смещение f
Рис.4.4. Дополнительные структуры команд  
                         

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

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

Для обозначения содержимого полей в архитектуре PDP-11 используется восьмеричная система счисления.

Адресные поля команд всех структур могут быть расширены одним или двумя дополнительными словами в зависимости от используемых режимов адресации.

Структуры команд "a" и "b" – это тоже структуры двухадресных команд, но в качестве одного из операндов используется содержимое РОНа. В команде структуры «b» второй адрес задается смещением относительно счетчика команд. Это структура команды выхода из цикла. Содержимое указанного в команде РОНа автоматически уменьшается на размер выполненной команды. Пока содержимое РОНа не равно нулю, происходит передача управление на команду по адресу равному содержимому счетчика команд плюс удвоенное смещение (в словах), которое рассматривается как число со знаком.

Команды со структурой "с" – это одноадресные команды, операнд адресуется и в памяти и в РОНах.

Команды со структурой "d" – это одноадресные команды. Адрес задается РОНом. Это могут быть команды обработки данных из стека, в этих случаях – указанный в команде РОН является указателем стека.

Команды структуры "е" – это безадресные операции.

Команды структуры "f" – это команды условной передачи управления, условие передачи управления задается кодом операции, а адрес перехода задается удвоенным смещением относительно счетчика команд. Смещение рассматривается как число со знаком.

Набор команд.

Все возможные коды операций двухадресной команды представлены в Табл. 4. (команды с суффиксом В – байтвые

Таблица 4. Коды операций двухместных команд.

Код Код Описание
  В двухместных полно-адресных командах не используется
MOV MOVB* Пересылка содержимого источника в приемник
CMP CMPB* Сравнение источника с приемником, установка кода условий
BIT BITB* Тестирование битов (по маске**), установка кода условий
BIC BICB* Сброс битов (по маске**).
BIS BISB* Установка битов (по маске**)
ADD SUB Сложение – 0110 или вычитание 1110 с записью результата
  В двухместных полно-адресных командах не используется
Примечания: *– команды с суффиксом В – байтовые, **маска задается вторым адресом

 

Кроме команд сложения и вычитания, все коды в этом формате по отношению к размерам операндов симметричны. На каждую операцию предусмотрено два кода операции: один для обработки полных операндов (слов), другой – для обработки байт. На языке ассемблера коды обработки байт содержат суффикс – B. Пример:

· MOV А1 А2 ;переслать слово,

· MOVВ А1 А2 ;переслать байт,

где: А1 А2 – адреса памяти или РОН, заданные в команде.

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

Режимы адресации задаются трехразрядным полем режима адресации. Ели команда содержит два адреса, то режимы адресации для каждого операнда задаются независимо друг от друга , каждый своим полем режима.

Трехразрядное поле режима адресации позволяет задать 8 основных режимов адресации. Режим адресации – это правило вычисления адреса операнда по заданному РОНу и, возможно, одному из дополнительных слов команды. Использование дополнительных слов команды также определяется режимом адресации. Но не все РОНы в МП ЭВМ PDP-11 равнозначны. Регистр R7– это счетчик команд. Использование этого регистра для задания режима адресации или бессмысленно или, для четырех режимов, дает эффекты новых режимов.

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

Таблица 5 Основные режимы адресаций

 
Мнем. Название Описание
R Регистровая В регистре–операнд
(R) Регистровая косвенная- В регистре – адрес операнда
(R)+ Автоувеличение В регистре – адрес операнда. После использования, адрес увеличивается на длину операнда
@(R)+ Автоувеличение косвенная В регистре – адрес адреса операнда. После использования, адрес увеличивается на 2.
– (R) Автоуменьшение Содержимое регистра уменьшается на длину операнда, результат используется как адрес операнда
@ – (R) Автоуменьшение косвенная Содержимое регистра уменьшается на 2, результат используется как адрес адреса операнда
X(R) Индексная Сумма содержимого регистра и индекса используется как адрес операнда, в качестве индекса используется второе или третье слово команды
@X(R) Индексная косвенная Сумма содержимого регистра и индекса используется как адрес адреса операнда, в качестве индекса используется второе или третье слово команды

 

Примеры (упорядочены по номерам режимов адресации):

0. CLR R0 ;очистка регистра R0.

1 CLR (R0) ;очистка ячейки памяти, адрес которой находится в R0

2. а) CLR (R0)+ ;очистка ячейки памяти, адрес которой находится в R0, после использования адреса он увеличивается на 2; в цикле: последовательная очистка ячеек памяти по смежным адресам в направлении их увеличения;

b) mov R1, (R0)+ пересылка из вершины стека числа в R1, где R0 – указатель стека.

3. CLR &(R0)+ ;в цикле: последовательная очистка ячеек памяти по списку адресов.

4. а) CLR –(R0) очистка ячейки памяти, адрес которой находится в R0, после использования адреса он увеличивается на 2; в цикле: последовательная очистка ячеек памяти по смежным адресам но в направлении их уменьшения.

b) mov –(R0), R1 засылка в стек числа из R1, где R0 – указатель стека.

5. CLR &–(R0) ;в цикле: последовательная очистка ячеек памяти по обратному списку адресов.

6. CLR Х(R0) очистка ячейки памяти, расположенной по адресу Х+(R0), Х–число во втором слове команды.

7. CLR &Х(R0) , очистка ячейки памяти, адрес которой расположен по адресу Х+(R0), Х–число во втором слове команды.

Режимы адресаций с использования счетчика команд представлены в табл. 6.

Таблица 6. Режимы адресаций с использования счетчика команд
Мнемоника Название Описание
(PC)+ #A Непосредственный операнд Непосредственный операнд задан в команде вторым или третьим словом
@(PC)+ @#A Абсолютный адрес Абсолютный адрес операнда задан в команде вторым или третьим словом
A(PC) A Относительный адрес Адрес операнда, относительно счетчика команд задан в команде вторым или третьим словом
@A(PC) @A Косвенный относительный адрес, Адрес адреса операнда, относительно счетчика команд задан в команде вторым или третьим словом.

 

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

Режим автоувеличения (2).

Режим автоувеличенияc использование обычного РОНа

b+0) MOV (R0)+, R1 ;содержимого ячейки памяти, адрес которой (например, 1000) хранится в R0 переслать в регистр R1.

В этом примере b+0 –является адресом выполняемой команды. После выполнения этой команды содержимое счетчика команд – R7 увеличивается на длину команды (в байтах) и становится равным b+2; это адрес следующей команда (Х),

b+2) Х–следующая команда.

Режим автоувеличенияc использование счетчика команд.

b+0) MOV (R7)+, R1 ;та же команда, но в качестве регистра используется счетчик команд (R7); После выборки команды содержимое R7 увеличивается на длину команды (в байтах) и становится равным b+2. Команда предполагает пересылку в R1 содержимого ячейки памяти, адрес которой хранится в данном случае в счетчике команд (R7), следовательно, в R1 пересылается Х. Но, так как режим адресации с автоувеличением, то содержимое (R7), уже как РОН, увеличивается на 2 и становится равным b+4.

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

MOV #X, R1, –– где #X – непосредственный операнд.

Косвенный режим автоувеличения с использованием счетчика команд (3).

Косвенный режим автоувеличения отличается от прямого режима тем, что операнд интерпретируется как адрес операнда. Следовательно, команда удлинится на слово Х, где Х используется в качестве абсолютного адреса операнда:

b+0) MOV (R7)+, R1

b+2)Х

b+4)следующая команда.

Для команд с абсолютной адресацией в ассемблере предусмотрена упрощенная форма записи:

MOV @#X, R1, где X – абсолютный адрес операнда.