Структура команд и режимы адресации
Программная модель 32-битового микропроцессора
Постбайт
Это необязательный элемент команды. Задает один (для одноадресной команды) или два адреса операндов, один из которых используется и как адрес результата.
md | reg | r/m | |||||
Рис. 3.6. Структура постбайта |
Постбайт (рис. 3.6) содержит 3 поля:
· md – поле режима адресации,
· reg – поле адреса регистра,
· r/m – поле адреса второго регистра или кода, определяющего способ вычисления адреса ячейки памяти.
В программной модели МП IA-32 от МП IA-16 с поправками на разрядность ширины обработки данных сохранились следующие решения:
· модель сегментированной математической памяти,
· задание адресов в сегменте компонентами, но с расширением возможностей по заданию адреса в массиве (использование возможности индексирования элементов массива в произвольном порядке),
· выделение адресного пространства для портов (программно-доступных регистров контроллеров устройств ввода-вывода).
Основной особенностью программной модели МП IA-32, кроме расширения разрядности адресов данных и команд, индексирования элементов массива в произвольном порядке и многократного расширения адресного пространства математической памяти, является встроенная аппаратная система защиты программ от взаимных помех.
Эта система предусматривает:
· использование специальных программных структур:
1. дескрипторов сегментов, определяющих сегменты (данных, программ),
2. дескрипторов шлюзов (точек входов в программные сегменты).
· введение :
1.системных и пользовательских таблиц дескрипторов,
2.новой процедуры программных переходов "переключение задач".
3.набора системных регистров дескрипторов.
Команда в защищенном режиме (рис. 3.17) может содержать от 1 до 17 байт:
0, 1,2,3,4 или 5 байта | 1 байт | 0 или1 байт | 0 или1 байт | 0,1,2 или 4 байта | 0,1,2 или 4 байта |
префикс | код операции | постбайт | SIB - байт | байты смещения | байты операнда |
1. Префиксы (0,1,2,3 или 4 байт):
· префикс блокировки шины реализует блокировку шин к общим ресурсам.
· префикс замены сегмента в явной форме указывает сегментный регистр, используемый программой,
· префикс переключения разрядности адреса изменяет принятую по умолчанию разрядность адреса на альтернативную (с 2-х байт на 4 или наоборот),
· префикс размера операнда изменяет разрядность операнда, принятую по умолчанию.
· префикс повторения используется с командами обработки строк, задает условие окончания операции.
Байт SIB (scale-index-base – масштаб-индекс-база) – может отсутствовать; если присутствует – является дополнением к постбайту, модифицирующим процедуру базово-индексной адресации; присутствие байта SIB определяется полем постбайта r/m=100.
Режимы адресации МП IA-32 с использованием SIB-байта (r/m = 100) означают, что следующий байт команды является SIB-байтом, а адрес операнда в упорядоченных массивах данных памяти (таблицах) вычисляется по формуле:
(B)+2S (I) + Disp,
где: B, I иS – поля байта SIB.
1. постбайта в МП IA-32.