←предыдущая следующая→
1 2 3 4 5 6 7 8
любой из логических блоков системы или которое управля-
ет этими блоками. Вместе с регистрами системных адресов эти
регистры хранят информацию о состоянии машины, которая влияет
на все задачи в системе. Для доступа к регистрам управления
определены команды их загрузки и сохранности содержимого.
- 7 -
Системным программистам регистры управления доступны
только через варианты команды MOV, которые позволяют их загру-
жать или сохранять в регистрах общего назначения.
4.7. Регистры отладки
Шесть доступных программисту регистров отладки (DR0-DR3,
DR6 и DR7) расширяют возможности отладки в МП 80386, они уста-
навливают точки останова по данным и позволяют устанавливать
точки останова по командам без модификации сегментов программ.
Регистры DR0-DR3 предназначены для четырех линейных точек
останова. Регистры DR4 и DR5 зарезервированы фирмой Intel для
будущих разработок. Регистр DR6 показывает текущее состояние
точек останова, а регистр DR7 используется для установки точек
останова.
4.8. Буфер ассоциативной трансляции
Буфер ассоциативной трансляции (TLB) - это кэш-память,
используемая для трансляции линейных адресов в физические.
Механизм проверки TLB является уникальным для МП 80386 и
может быть не реализован в том же виде в будущих процессорах.
Программы, которые используют этот механизм в его нынешнем ви-
де, могут оказаться несовместимыми с будущими процессорами.
5. Система команд
5.1. Формат команд
Команды МП 80386 состоят из отдельных элементов и могут
иметь различные форматы. Из всех описанных ниже элементов
только один (код операции, Коп) обязательно присутствует в лю-
бой команде. Остальные элементы могут отсутствовать, что опре-
деляется характером операции, а также местоположением и типом
операндов.
Команды состоят из следующих элементов: необязательных
префиксов; одного или двух байтов кодов операции; возможно -
описателя адреса, который включает байт Mod R/M и байт масшта-
ба, индекса и базы; смещения - если требуется; поля не-
посредственных данных - если требуется.
Префиксы - один или несколько байтов, предшествующих ко-
манде и модифицирующих операцию этой команды. Имеется 4 типа
- 8 -
префиксов.
1. Повторение - используется с командами обработки строк;
заставляет команду воздействовать на каждый элемент строки.
2. Размер операнда - переключает разрядность операндов,
устанавливая их 32-разрядными или 16-разрядными.
3. Размер адреса - переключает разрядность адреса, опре-
деляя образование 32-разрядных или 16-разрядных адресов.
4. Замена сегмента - в явной форме указывает, какой сег-
ментный регистр должна использовать команда. Префикс отменяет
действующий по умолчанию выбор сегментного регистра, обычно
осуществляемый МП 80386 при выполнении этой команды.
Код операции (Коп) - описывает операцию, выполняемую ко-
мандой. Некоторым командам присущи несколько кодов операций,
каждый из которых описывает определенный вариант операции.
Описатель регистра - в команде могут быть описаны один
или два регистра в качестве операндов. Описатель регистра мо-
жет присутствовать как в байте кода операции, так и в байте
описателя режима адресации.
Описатель режима адресации. Этот элемент, если он
присутствует, описывает, является ли операнд содержимым ре-
гистра или ячейки памяти. Если операнд находится в памяти,
описатель режима указывает, надо ли использовать смещение, ин-
дексный регистр, регистр базы и масштабирование.
Байты MOD R/M и SIB. Большинство команд, ссылающихся на
операнд, находящийся в памяти, содержат после байта основного
кода операции еще байт формы адресации. Этот байт описывает
используемую форму адреса. Определенные значения кода поля MOD
R/M указывают на наличие второго адресного байта SIB.
Байты MOD R/M и SIB содержат следующую информацию:
- тип индексации или номер регистра, используемого в ко-
манде;
- используемый регистр или дополнительную информацию о
выборе команды;
- информацию о базе, индексе и масштабе;
Смещение. Если описатель режима адресации указывает, что
при вычислении адреса операнда будет использовано смещение, в
состав кода команды включается поле смещения. Смещение
представляет собой 8-, 16- или 32-разрядное целое число со
знаком. 8-разрядная форма используется в тех случаях, когда
значение смещения невелико.
Непосредственный операнд (данное). Если этот элемент
присутствует, он представляет значение операнда команды. Не-
- 9 -
посредственные операнды могут быть 8-, 16- или 32-разрядными.
В случаях когда 8-разрядный непосредственный операнд использу-
ется в команде вместе с 16- или 32-разрядным операндом, про-
цессор автоматически увеличивает размер 8-разрядного операнда
путем расширения его знакового разряда.
5.2. Описание обозначения
+rb, +rw, +rd Код регистра (от 0 до 7), который складыва-
ется с указанным слева от знака плюс шестнадцетиричным числом
(байтом) с лбразованием байта кода операции. Регистрам присво-
ены следующие коды :
rb rw rd
AL=0 AX=0 EAX=0
CL=1 CX=1 ECX=1
DL=2 DX=2 EDX=2
BL=3 BX=3 EBX=3
AH=4 SP=4 ESP=4
CH=5 BP=5 EBP=5
DH=6 SI=6 ESI=6
BH=7 DI=7 EDI=7
/цифра Цифра, стоящая справа от косой черты, имеет, вооб-
ще говоря, значение от 0 до 7. Она показывает, что в байте MOD
R/M указывается только один операнд r/m (регистр/память). Сама
цифра помещается в поле reg и образует расширение кода опера-
ции.
/r Обозначение показывает, что байт MOD R/M содержит два
операнда (reg и r/m).
cb, cw, cd, cp Величина размером 1 байт (cb), 2 байта
(cw), 4 байта (cd) или 6 байт (cp) следует за кодом операции и
определяет относительный адрес, а также, возможно новое значе-
ние программного сегмента.
ib, iw, id Непосредственный операнд размером 1 байт (id),
2 байта (iw) или 4 байта (id) следует за байтами кода опера-
ции, MOD R/M или SIB. Код операции указывает, является ли опе-
ранд знаковой величиной.
imm8 Непосредственный операнд размером 1 байт. Величина
imm8 является знаковой величиной между -128 и +127 включитель-
но. В командах, где размер второго операнда составляет слово
или двойное слово, величина imm8 расширяется до слова или
- 10 -
двойного слова. Старшие байты расширенной величины заполняются
старшим битом непосредственного операнда.
imm16 Непосредственный операнд размером 1 слово. Исполь-
←предыдущая следующая→
1 2 3 4 5 6 7 8
|
|