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

L-------------------------------------------------------------Поле         Определение регистр         номер индексного регистра

D/A             тип индексного регистра:

0=Dn

1=An

W/L             словный/двухсловный размер индекса:

0= слово с распространенным знаком

1= длинное слово масштаб:        масштабирующий множитель:

00=1

01=2

10=4

11=8

BS              подавление базирования:

0=базовый регистр добавляется

1=базовый регистр игнорируется

IS              подавление индексного регистра:

0=индексный операнд вычислить и добавить

1=индексный операнд игнорировать разм.BD         размер базового смещения:

00=зарезервировано

01=смещение нулевой длины

10=словное смещение

11=двухсловное смещение

I/IS            селектор индексирования/косвенности:

определяет совместно с битом 6  (IS)  способ индексируемой/косвенной адресации операнда

Поля подавления индекса (IS) и селектора индексирования/косвенности (I/IS) совместно определяют тип косвенного обращения  при полноформатной индексируемой/косвенной адресации.  Кодировка  и определяемая ею адресация даны в таблице 2-2.

Таблица 2-2. Тип косвенного обращения, кодируемый полями IS-I/IS

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

¦ IS  ¦  I/IS   ¦                 адресация                   ¦

+-----+---------+---------------------------------------------+

¦  0  ¦   000   ¦ без  использования  памяти  для  вычисления ¦

¦     ¦         ¦ косвенного адреса                           ¦

¦  0  ¦   001   ¦ косвенная с преиндексированием и со  смеще- ¦

¦     ¦         ¦ нием нулевой длины                          ¦

¦  0  ¦   010   ¦ косвенная с преиндексированием и со словным ¦

¦     ¦         ¦ смещением                                   ¦

¦  0  ¦   011   ¦ косвенная с преиндексированием и с  длинным ¦

¦     ¦         ¦ смещением                                   ¦

¦  0  ¦   100   ¦ зарезервировано                             ¦

¦  0  ¦   101   ¦ косвенная с постиндексированием и со смеще- ¦

¦     ¦         ¦ нием нулевой длины                          ¦

¦  0  ¦   110   ¦ косвенная с постиндексированием и со  слов- ¦

¦     ¦         ¦ ным смещением                               ¦

¦  0  ¦   111   ¦ косвенная с постиндексированием и с длинным ¦

¦     ¦         ¦ смещением                                   ¦

¦  1  ¦   000   ¦ без  использования  памяти  для  вычисления ¦

¦     ¦         ¦ косвенного адреса                           ¦

¦  1  ¦   001   ¦ косвенная через память с смещением  нулевой ¦

¦     ¦         ¦ длины                                       ¦

¦  1  ¦   010   ¦ косвенная через память со словным смещением ¦

¦  1  ¦   011   ¦ косвенная через память с длинным смещением  ¦

¦  1  ¦ 100-111 ¦ зарезервировано                             ¦

L-----+---------+---------------------------------------------В Таблице 2-3 представлена кодировка способов  адресации,  описанных в предыдущих разделах.

Таблица 2-3. Кодирование исполнительных адресов

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

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

+--------------------------------------+-------+--------+

¦ Прямая регистра данных               ¦  000  ¦  рег # ¦

¦ Прямая адресного регистра            ¦  001  ¦  рег # ¦

¦ Косвенная через адресный регистр     ¦  010  ¦  рег # ¦

¦ Косвенная через адресный  регистр  с ¦  011  ¦  рег # ¦

¦         постинкрементированием       ¦       ¦        ¦

¦ Косвенная через адресный  регистр  с ¦  100  ¦  рег # ¦

¦         предекрементированием        ¦       ¦        ¦

¦ Косвенная через адресный регистр  со ¦  101  ¦  рег # ¦

¦         смещением                    ¦       ¦        ¦

¦ Косвенная через адресный  регистр  и ¦  110  ¦  рег # ¦

¦         память с индексированием     ¦       ¦        ¦

¦ С абсолютным коротким адресом        ¦  111  ¦  000   ¦

¦ С абсолютным длинным адресом         ¦  111  ¦  001   ¦

¦ Косвенная через программный  счетчик ¦  111  ¦  010   ¦

¦         со смещением                 ¦       ¦        ¦

¦ Косвенная через программный  счетчик ¦  111  ¦  011   ¦

¦         и память  с  индексированием ¦       ¦        ¦

¦ С непосредственными данными          ¦  111  ¦  100   ¦

¦ Зарезервирован для будущего  исполь- ¦  111  ¦  101   ¦

¦         зования фирмой Моторола      ¦       ¦        ¦

¦ Зарезервирован для будущего  исполь- ¦  111  ¦  110   ¦

¦         зования фирмой Моторола      ¦       ¦        ¦

¦ Зарезервирован для будущего  исполь- ¦  111  ¦  111   ¦

¦         зования фирмой Моторола      ¦       ¦        ¦

L--------------------------------------+-------+--------2.10 СИСТЕМНЫЙ СТЕК

В качестве указателя системного стека (SP) используется седьмой адресный регистр (A7), роль которого в каждый конкретный момент играет один из трех имеющихся системных стековых регистров. Какой именно указатель стека используется в текущий момент, определяют биты M и S регистра состояния. Если S=0, то активен указатель  стека пользователя (USP), а указатели основного стека и стека прерываний недоступны. Если S=1 и M=1, то активен  указатель  основного  стека  (MSP),  а регистры стека пользователя и стека прерываний как адресные регистры недоступны. Если  S=1  и

M=0,  то  в  свою  очередь  активен  указатель стека прерываний

(ISP), а недоступны как адресные регистры  указатели  основного стека и стека пользователя. (Последнее соответствует режиму супервизора  в  MC68000,  MC68008,  MC68010  и MC68012). Термином

"стек супервизора" именуется, в зависимости от  состояния  бита

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

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