Типы данных процессоров IA-
1. Бит - задаётся адресом слова и смещением (номером бита в слове).
2. Битовое поле - группа до 32-х смежных бит.
3. Байт - 8бит.
4.Целые числа без знака: = 8/16/32/64/бит (байт/слово/двойное слово/учетверённое слово). Диапазон:0 – 2N-1
5. Целые числа со знаком N = 8/16/32/64/бит (байт/слово/двойное слово/учетверённое слово). Знак - значение самого старшего бита. Диапазон: от -2N-1 до +2N-1-1}.
6. Строки (или цепочки) из байт, слов и двойных слов (до 4ГБ).
7. Указатели:
- короткий (ближний): смещение – 32(16)
- длинный (дальний): смещение – 32(16); селектор (сегмент)-16
8. Неупакованный двоично-десятичный тип (по одной цифре в каждом байте)
9. Упакованный двоично-десятичный тип (по две цифры в байте).
10. Вещественные числа с плавающей точкой(для сопроцессора):
- одиночной точности - 32 разряда
- двойной точности - 64 разряда
- повышенной точности - 80 разрядов (64/16).
Числа состоят из трёх полей (знак мантиссы, характеристика, мантисса) и могут бать представлены в одном из трёх форматов: коротком (1+8+23=32) - dd, длинном (1+11+52=64) – dq и расширенном (1+15+64=80) - dt.
Поскольку вещественные числа являются нормализованными, то есть, старший разряд мантиссы всегда равен 1, то в коротком и длинном форматах он не присутствует, а подразумевается. То есть в мантиссе на самом деле не 23 (52) бита, а 24(53). В процессоре они всегда представляются в расширенном формате (по этой причине другими форматами лучше не пользоваться).
11. Типы данных расширений: ММХ, SSE, SSE-2.
– 8 упакованных байт
– 4 упакованных слова
– 2 упакованных двойных слова
– учетверённое слово
Замечание. Данные – байты в словах - размещаются справа налево начиная с младшего адреса (little-endian в отличие от big- endian)
Представление вещественных чисел в IA16/32.
Вещественные числа состоят из трёх полей (знак мантиссы, характеристика, мантисса) и могут быть представлены в одном из трёх форматов: коротком (1+8+23=32) - dd, длинном (1+11+52=64) – dq и расширенном (1+15+64=80) - dt.
Поскольку вещественные числа являются нормализованными, то есть, старший разряд мантиссы всегда равен 1, то в коротком и длинном форматах он не присутствует, а подразумевается. То есть в мантиссе на самом деле не 23
(52) бита, а 24(53). В процессоре они всегда представляются в расширенном формате (по этой причине другими форматами лучше не пользоваться).
Характеристика связана с порядком посредством соотношения
q=p+смещение
Т.о. характеристика есть смещённый порядок.
Имеется три формата.
s |
q |
M |
Формат |
Фиксированное смещение |
|
31 |
30÷23 |
22÷0 |
dd |
короткий |
+127 |
63 |
62÷52 |
51÷0 |
dq |
длинный |
+1023 |
79 |
78÷64 |
63÷0 |
dt |
расширенный |
+16383 |
где s - знак мантиссы, q -харктеристика M - мантисса
q = p + смещение(ФС)
Диапазон вещественных чисел
Формат |
Короткий |
Длинный |
Расширенный |
Размер |
32 |
64 |
80 |
М |
24 |
53 |
80 |
Q |
8 |
11 |
15 |
Ф.С. |
+127 |
+1023 |
+16383 |
Диапазон q |
0...255 |
...2047 |
...32767 |
Диапазон р |
-126...+127 |
-1022...+1023 |
-16382...+16383 |
Диапазон Представимых чисел |
10-38...10+38 |
10-308...10308 |
10-4932...104932 |
Все отрицательные значения порядка смещаются по числовой оси в область с нулём в старшем разряде, а положительные – в область с единицей в старшем разряде.
Специальные числа.
Денормализовнные вещественные числа. Это числа с нулевой характеристикой (с минимальным порядком равным - минус (214 - 1)) и ненулевой мантиссой.
Нули. Это числа с нулевой характеристикой (с минимальным порядком равным - минус (214 - 1)) и нулевой мантиссой. В зависимости от знака мантиссы различают положительный и отрицательный нуль..
Бесконечность имеет максимальное значение характеристики (а, значит, и порядка) и минимальную нормализованную ненулевую мантиссу (с единственной единицей в старшем разряде). В зависимости от знака мантиссы различают плюс и минус бесконечность.
Нечисла имеют максимальное значение характеристики и любую неминимальную нормализованную мантиссу.
4.5. Набор регистров.
Они подразделяются на арифметические (логические), адресные и служебные.
В группе арифметических, по крайней мере, д. б. хотя б один регистр – накопитель или аккумулятор, но их м. б. и несколько.
В группе адресных д.б. регистр модификации (индексации) адреса.
Если арифметические (логические) регистры совмещаются с адресными они носят название универсальных (general) или общих.
В качестве примера рассмотрим набор регистров ИА-32.
Процессор имеет широкий набор регистров.
РОН - общие регистры данных и адресов с разрядностью 8-16-32
31…16 |
15…8 |
7…0 |
|
AX |
|
|
AH |
AL |
|
BX |
|
|
BH |
BL |
|
CX |
|
|
CH |
CL |
|
DX |
|
|
DH |
DL |
EАX
ЕВХ
ECX
EDX
AX – умножение, деление, ввод/вывод слова
АL - умножение, деление, ввод/вывод байта
АН - умножение, деление байта
BX - регистр базы
СХ - счётчик циклов и указатель длины строковых операций
DX - умножение, деление слова, ввод/вывод с косвенной адресацией
Регистры указателей и индексов.
31 16 |
15 0 |
|
SP |
|
BP |
|
SI |
|
DI |
ESP
EBP
ESI
EDI
SP - Указатель стека (адрес вершины)
BP - Регистр базы
SI - Индекс адреса источника операнда
DI- Индекс адреса результата
Вышеперечисленные регистры адресуются явно и могут использоваться в любых арифметических и логических операциях
ССП включает указатель инструкций (ЕIP - смещение следующей исполняемой команды относительно базового адреса из сегмента кода) и регистр флагов (ЕFLAGS, расширенного до 32 разрядов).
Указатель инструкций и регистр флагов.
31...16 |
15 …0 |
|
IP |
ЕIP
IP - Адрес следующей команды, относительно базы сегмента кода (СS*16)
FLAGS
15…12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
OF |
DF |
IF |
TF |
SF |
ZF |
0 |
AF |
0 |
PF |
1 |
CF |
|
S |
c |
x |
X |
s |
s |
|
S |
|
s |
|
s |
|
|
|
|
|
|
|
|
|
|
|
|
|
CF – перенос (заем) из старшего разряда в арифметических операциях.
PF = 1 - чётное число единиц результата (в командах ввода-вывода).
AF - перенос из (заём) старшего разряда тетрады в операциях
десятичной арифметики
SF =1 - результат отрицательный
ZF = 1 - нулевой результат
TF = 1 - режим трассировки ( прерывание разрешено после выполнения каждой команды).
IF = 1 - аппаратные прерывания разрешены.
DF = 1 - декремент индексных регистров (0 – инкремент)
OF = 1 - переполнение результата арифметической операции.
В защищённом режиме регистр флагов также расширен до 32 разрядов.
EFLAGS
32…22 |
221 |
220 |
119 |
118 |
117 |
116 |
115 |
114 |
13…12 |
111 |
…10…0 |
|
IID |
VVIP |
VVIF |
AAC |
VVM |
RRF |
00 |
NNT |
IOPL |
OOF |
|
IOPL - уровень привилегий в/в
NT - флаг вложенной задачи
RF - флаг возобновления после отладочного останова
VM - включение режима виртуального 8086
AC - контроль выравнивания операнда по соответствующей границе
VIF - виртуальная маска прерываний для Р5+
VIP - виртуальный запрос прерываний Р5+
ID - флаг доступности команды идентификации СРUID
Регистры сегментов.
Они содержат 16 разрядные указатели сегментов (в реальном режиме) или селекторы дескрипторов (в защищенном режиме).
15 0
Регистр сегмента |
CS - сегмент команд
SS - сегмент стека
DS - сегмент данных
ES - сегмент данных
GS - сегмент данных
FS - сегмент данных
Формат селектора.
15 3 |
2 |
1 0 |
Индекс |
TI |
RPL |
TI определят тип таблицы дескрипторов: 0 - глобальная; 1 - локальная (GDT и LDT).
RPL - определяет уровень привилегий
Неиспользуемые регистры сегментов определяют нулевой селектор сегмента - выбирается нулевой дескриптор глобальной таблицы.
Кроме этих двух таблиц имеется таблица дескрипторов прерываний.
Ссылка на IDT происходит по командам вызова прерываний и по самим прерываниям и исключениям.
Формат дескриптора сегмента в таблице.
31 16 15 0
Базовый адрес сегмента (15…0) |
Размер сегмента (15…0) |
БАС (31…24) |
GDOU |РС(19…16) |
Байт AR |
БАС (23…16) |
G – размерность размера сегмента (байты/страницы).
Байт AR – байт управления доступом
7 |
6 5 |
4 |
321 |
0 |
Р |
D P L |
S |
Тип сегмента |
А |
DPL – уровень привилегированности сегмента
S = 1 - признак сегмента памяти;
Тип сегмента:
- данных (только чтение);
- данных (чтение и запись);
- стека (чтение и запись);
- команд (только выполнение);
- команд (чтение и выполнение).
Программно недоступные регистры дескрипторов автоматически загружаются при загрузке соответствующих селекторов в сегментные регистры.
Наконец, системные регистры: 1) 4 регистра системных адресов;
2) 4 регистров управления; 3) 8 регистров отладки;
Регистры системных адресов:
- регистр таблицы глобальных дескрипторов GDTR для задания базового адреса (32р) таблицы (в пространстве линейных адресов, то есть в той же памяти) и размера (16р.) таблицы (от 8байт до 64Кб).
- 16 разрядный селектор дескриптора LDTR, определяющий местонахождение локальной дескрипторной таблицы в глобальной (аналогичен обычному сегменту)
- регистр таблицы дескрипторов прерываний GDTR (по формату совпадает с ТГД);
- 16 разрядный селектор задачи указывает в ТГД местонахождение сегмента состояния текущей задачи, где запоминается состояние текущей задачи при переключении задач.
Эти регистры загружаются по специальным командам, тогда как к собственно дескрипторам программного доступа нет.
Программно недоступные регистры дескрипторов автоматически загружаются при загрузке соответствующих селекторов в сегментные регистры.
Регистры управления СR0 - CR4 (CR1 не используется)хранят признаки состояния процессора, общие для всех задач (ССП и ССС). CR0 - регистр системных флагов:
- разрешение защищенного режима
- запрещение кэширования
- страничного преобразования
- режим 36 разрядной адресации
- страниц размера страниц (4КБ/4МБ)
CR2 – служит для хранения линейного адреса которого не оказалось среди страниц.
CR3 - регистр физического базового адреса каталога страниц.
Регистры отладки предназначены для задания и управления контрольными точками (впервые появились в 80486).
Регистры тестирования TR6 и TR7 используются при проверке преобразования линейных адресов в физические.
Регистры дополнительных устройств обработки.
Стек из восьми 80 разрядных регистров для сопроцессора с плавающей запятой. Эти же регистры (но с ограничением до 64 разрядов) в режиме произвольной выборки используются в качестве регистров целочисленного расширения ММХ.
Восемь 128 разрядных регистров используются в ММХ расширении с плавающей запятой (ХММ или SSE).
4.7. Форматы команд.