Указатель команд
Указатель команд (рис. 3.4) представляет собой 32-разрядный ре-
гистр с именем EIP, содержимое которого используется в качестве сме-
щения
при
определении
адреса
следующей
выполняемой
команды.
Смещение задается относительно базового адреса сегмента команд CS.
Младшие 16 бит (0–15) содержат 16-разрядный указатель команд с име-
нем
IP,
который
используется при
16-разрядной
адресации.
31 15 0
EIP
Рис.
3.4.
Структура регистра
указателя
команд
Указатель команд непосредственно программисту недоступен. Его
содержимое
изменяется
при
выполнении
команд
передачи
управления
и
прерываний.
Регистр флагов
Регистр флагов является 32-разрядным, имеет имя EFLAGS. Его
разряды содержат признаки результата выполнения команды, управля-
ют обработкой прерываний, последовательностью вызываемых задач,
вводом/выводом
и
рядом
других
процедур.
Регистры процессора обработки чисел с плавающей точкой
Набор
регистров,
входящих
в
блок
FPU,
изображен
на
рис.
3.5.
При работе FPU 80-разрядные регистры ST0–ST7 образуют коль-
цевой стек, в котором хранятся числа с плавающей точкой, представ-
ленные
в
формате с
расширенной точностью.
Регистры
данных Регистр
тегов
79 78 64 63 0 1 0
ST0
|
|
| MM0
|
| Тег(0)
|
ST1
|
|
| MM1
| Тег(1)
|
ST2
|
|
| MM2
| Тег(2)
|
ST3
|
|
| MM3
| Тег(3)
|
ST4
|
|
| MM4
| Тег(4)
|
ST5
|
|
| MM5
| Тег(5)
|
ST6
|
|
| MM6
| Тег(6)
|
ST7
|
|
| MM7
| Тег(7)
|
15 0
|
| 47 0
|
Регистр управления
|
| Указатель команд
|
Регистр состояния
|
| Указатель данных
|
Рис.
3.5.
Регистры
блока
FPU
Регистр тегов FPU содержит 16-разрядное слово, включающее во-
семь двухбитовых тегов. Каждый тег (признак) характеризует содержи-
мое
одного
из
регистров
данных.
Тег определяет, является ли регистр пустым (незаполненным) – код
11, или в него введено конечное число – 00 (достоверное значение), или
нуль
–
01,
неопределенное
значение
(бесконечность)
–
10
(нет
числа
и неподдерживаемый формат). Слово тегов позволяет оптимизировать
функционирование
FPU посредством идентификации
пустых
и
непу-
стых регистров данных, проверить содержимое регистра без сложного
декодирования
хранящихся в
нем данных.
, а также тестирование кэш-
памяти
команд
и
данных,
буферов
ассоциативной
трансляции
(TLB)
и устройств постоянной памяти. Внутренние счетчики контролируют ра- боту процессора и проводят подсчет событий. Введена новая функция –
мониторинг
термического состояния системной
платы.
Переименование регистров
В современных процессорах используются блоки регистров заме-
щения (регистровые файлы) для целочисленных, вещественных и век-
торных данных. Для любого указанного в команде логического регистра
(программно можно обращаться в х86 только к 8-ми регистрам общего
назначения
GPR,
8-ми
регистрам
с
плавающей
точкой
ST
или
8-ми
ММХ / ХММ-регистрам) выделяется один из физических регистров со-
ответствующего блока регистров замещения, содержащего, например,
128 регистров.
Эта процедура
(переименование регистров)
позволяет
увеличить
количество
используемых
регистров
процессора,
а
также
позволяет
выполнять
команды,
в
которых
задействованы
одни
и
те
же
ло-
гические регистры, одновременно
или
с
изменением
их
последовательно-
сти.
-
Регистровые структуры процессоров AMD64 (Intel64)
В процессорах x86-64 (AMD64), Intel64 архитектур (рис. 3.6) суще-
ствующие в х86 регистры общего назначения (GPR) расширены с 32 до
64 бит (RAX, RBX, RCX, RDX, RBP, RSP, RSI, RDI) и к ним добавлены
еще 8 новых 64-разрядных регистров (R8–R15). Также 8 новых 128-
битных регистров (XMM8–XMM15) добавлено в блок SSE, что обеспе-
чивает
поддержку
SSE2.
В блоке FPU используются существующие в х87 регистры данных
ST0–ST7
(80-разрядные)
и
64-разрядные
мультимедийные
регистры
ММ0–ММ7,
объединенные
в
общее
пространство
с
регистрами
ST.
Регистр указателя команд (RIP) и регистр флагов (RFLAGS) также
расширены
до
64
разрядов.