Организация данных и способы адресации, страница 3

2.6 АДРЕСАЦИЯ

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

Местоположение операнда задается в команде одним из трех способов:

указанием регистра     - номер регистра задается  в поле регистра команды;

исполнительным адресом - путем  использования  различных способов адресации;

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

2.7 РЕГИСТРЫ: СОГЛАШЕНИЯ ОБ ОБОЗНАЧЕНИЯХ

Регистры идентифицируются в соответствии со  следующей  английской мнемоникой:

An - адресный регистр n

(например, A3 - адресный  регистр 3)

Dn - регистр данных n

(например, D5 - регистр данных 5)

Rn - адресный регистр или регистр данных n

Xn - обозначает индексный регистр n (регистр адреса  или данных)

PC - программный счетчик

SR - регистр состояния

CCR - регистр кодов условий; часть регистра состояния

SP - текущий указатель стека; имена SP и A7 эквивалентны

USP - указатель стека пользователя (A7)

ISP - указатель стека прерываний (A7')

MSP - указатель основного стека (A7'')

SSP - указатель стека супервизора: либо  основной  (MSP), либо указатель стека прерываний (ISP)

SFC - регистр модификации функционального кода источника

DFC - регистр модификации функционального кода приемника

VBR - базовый регистр векторов исключений

CACR - регистр управления кэш-памяти

CAAR - адресный регистр кэш-памяти

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

2.8 ИСПОЛНИТЕЛЬНЫЙ АДРЕС

Большинство команд определяет местоположение операнда,  используя поле исполнительного адреса (ИА) в слове операции. На  Рис.

2-4 приведен для примера общий формат слова операции для команды с одним исполнительным адресом. Исполнительный адрес состоит из  двух  3-битных  полей: поля моды и поля регистра. Значением первого поля определяется используемый способ  адресации.  Поле регистра  содержит  номер регистра. Описание слова операции для каждой команды дано в ПРИЛОЖЕНИИ C.

15  14  13  12  11  10  9   8   7   5   4   3   2   1   0

----T---T---T---T---T---T---T---T---T----------------------¬

¦   ¦   ¦   ¦   ¦   ¦   ¦   ¦   ¦   ¦ исполнительный адрес ¦

¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X +----------T-----------+

¦   ¦   ¦   ¦   ¦   ¦   ¦   ¦   ¦   ¦   мода   ¦  регистр  ¦

L---+---+---+---+---+---+---+---+---+----------+-----------Рис. 2-4. Слово операции одноадресной команды

Информация, содержащаяся в поле исполнительного  адреса,  может оказаться недостаточной для полного определения адреса  операнда. Дополнительная информация, называемая расширением  исполнительного адреса, содержится в следующем слове или словах и считается составной частью команды (см. Рис.2-3). Детальное описание формата слов расширения можно найти далее в Разделе 2.9 КОДИРОВАНИЕ ИСПОЛНИТЕЛЬНЫХ АДРЕСОВ.

2.8.1 Прямые регистровые способы адресации

Такие способы адресации используются в случаях,  когда  операнд находится в одном из 16 регистров общего назначения или в одном из управляющих регистров (SR, VBR, SFC, DFC, CACR, CAAR).

2.8.1.1 ПРЯМАЯ АДРЕСАЦИЯ РЕГИСТРА ДАННЫХ. Операнд  находится  в регистре данных, номер которого указан в поле регистра исполнительного адреса.

Формирование:           ИА = Dn

Синтаксис ассемблера:   Dn

Мода:                   000            31      0

Регистр:                n              --------¬

Регистр данных:         Dn     ---->   ¦операнд¦

L-------2.8.1.2 ПРЯМАЯ АДРЕСАЦИЯ АДРЕСНОГО РЕГИСТРА Операнд находится в адресном регистре, номер которого указан в поле регистра исполнительного адреса.

Формирование:           ИА = An

Синтаксис ассемблера:   An

Мода:                   001            31      0

Регистр:                n              --------¬

Адресный регистр:       An     ---->   ¦операнд¦

L-------2.8.2 Косвенные способы адресации через регистр

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

2.8.2.1 КОСВЕННАЯ АДРЕСАЦИЯ ЧЕРЕЗ АДРЕСНЫЙ РЕГИСТР. Адрес  операнда находится в адресном регистре, номер  которого  указан  в поле регистра.

Формирование:           ИА = (An)

Синтаксис ассемблера:   (An)

Мода:                   010

Регистр:                n               31         0

-------------¬

Адресный регистр:       An     -------->адрес памяти¦

L-----T------¦

31   ¦     0

------v------¬

Адрес памяти:                          ¦   операнд  ¦

L------------2.8.2.2 КОСВЕННАЯ АДРЕСАЦИЯ ЧЕРЕЗ АДРЕСНЫЙ РЕГИСТР С ПОСТИНКРЕМЕНТИРОВАНИЕМ. Адрес операнда находится  в  адресном  регистре, номер которого указан в поле  регистра.  Адрес  операнда  после своего использования увеличивается на 1, 2 или 4 в соответствии с размером операнда (байт, слово или длинное слово).  Сопроцессор может обеспечивать необходимую величину приращения для  любого размера операнда, вплоть до 256 байт.  Если  адресный  регистр является указателем стека, а размер операнда равен байту, то адрес увеличивается на 2, а не на 1 с тем,  чтобы  поддерживать значение указателя на границе слова.

Формирование:           ИА = (An)

An=An+SIZE

Синтаксис ассемблера:   (An)+

Мода:                   011

Регистр:                n               31         0

-------------¬

Адресный регистр:       An ------------>адрес памяти¦

L-^---T-------+¬  ¦

Размер операнда(1,2 или 4): ------------>+<--+

L--  ¦

31   ¦     0

------v------¬

Адрес памяти:                          ¦   операнд  ¦

L------------2.8.2.3 КОСВЕННАЯ АДРЕСАЦИЯ ЧЕРЕЗ АДРЕСНЫЙ РЕГИСТР С  ПРЕДЕКРЕМЕНТИРОВАНИЕМ. Адрес операнда находится  в  адресном  регистре, номер которого указан в поле  регистра.  Адрес  операнда  перед своим использованием уменьшается на 1, 2 или 4 в соответствии с размером операнда (байт, слово или длинное слово).  Сопроцессор может обеспечивать необходимую величину декремента  для  любого размера операнда, вплоть до 256 байт. Если адресный регистр является указателем стека, а размер операнда равен байту, то  адрес уменьшается на 2, а не на 1 с тем, чтобы поддерживать  значение указателя на границе слова.