- •Архитектура современной вычислительной системы (обзор)
- •Кэши ассоциативные, с прямым отображением и множественно-ассоциативные
- •Представление бинарных данных
- •Режимы работы процессоров семейства i8086+
- •Регистры i8086+
- •Формат инструкции
- •Некоторые инструкции ЦПУ (не включая инструкции FPU, MMX, SSEn и пр.)
- •Формирование кодов основных инструкций i8086+
- •Соответствие мнемоники машинным кодам на примере инструкции пересылки (mov)
- •Режим реальных адресов i8086 (real mode)
- •Синтаксис основных ассемблеров (Intel и AT&T) семейства процессоров i8086+
- •Адреса: короткие, ближние, дальние; перемещаемые записи
- •Сегменты, секции, модели памяти, страницы
- •Переходы, вызовы процедур
- •Символы и макросы
- •Структура физического адресного пространства режима реальных адресов
- •Простейший пример BIOS
- •Некоторое оборудование IBM PC
- •Инициализация контроллера прерываний
- •Инициализация контроллеров клавиатуры PS/2
- •Инициализация PS/2 мыши
- •Инициализация таймера 8253/8254
- •Работа с последовательным интерфейсом UART
- •Программирование контроллера DMA 8257/8237
- •Прерывания в SMP системе; измерение времени
- •Инициализация локального контроллера прерываний (LAPIC)
- •Инициализация контроллера прерываний ввода-вывода (IO APIC)
- •Сегментная модель защищенных режимов i286...x64
- •Общая структура дескриптора
- •Cегмент состояния задачи; переключение стеков
- •«Нереальный 8086»
- •Системные вызовы
- •Структура адресного пространства многопоточного приложения (C, расширение MSVC) с обработкой исключений (Win32).
- •Структура адресного пространства многопоточного приложения (C++) с обработкой исключений (Posix Threads (NPTL); Linux; IA-32)
- •Страничная модель защищенных режимов i386...x64
- •Соглашения о вызовах C/C++ (платформы IA-32, x64)
- •Пример программы, демонстрирующей различные соглашения о вызовах.
- •Основные средства управления адресным пространством, основанные на страничном механизме
- •Запрет на исполнение данных
- •Пример использования уязвимости типа «переполнение буфера в стеке»
- •Проецирование файлов.
- •Императивный способ управления проецированием.
- •Пример создания разделяемого проецирования для межпроцессного взаимодействия
- •Исполняемые файлы и динамические библиотеки
- •Построение динамических библиотек
- •Загрузка библиотек на этапе исполнения.
- •Экспорт, импорт, перемещаемые записи в Windows
- •Экспорт, импорт, перемещаемые записи в Posix
- •POSIX. Позиционно-независимый код в архитектуре IA-32.
- •Построение и использование статических библиотек объектных файлов
- •Встроенный ассемблер; понятие барьеров оптимизации и барьеров памяти.
- •Пример измерения коротких интервалов времени
- •SMP, критические секции и взаимные блокировки
- •Литература
Регистры i8086+ |
|
79 |
|
|
63 |
|
|
47 |
|
|
31 |
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
15 |
|
||||||
|
|
|
|
|
|
«Именованные» регистры: Регистры общего назначения
A.. — Accumulator |
#0 |
|
C.. — Counter |
||
|
||
D.. — Data |
|
|
B.. — Base |
#1 |
|
SP — Stack Pointer |
|
|
BP — Base Pointer (Frame) |
#2 |
SI — Source Index (Address)
DI — Destination Index
IP — Instruction Pointer |
#3 |
|
|
||
CS — Code Segment |
#4 |
|
|
||
DS — Data Segment |
#5 |
|
SS — Stack Segment |
||
|
||
ES — Extra data segment |
|
|
FG — по алфавиту |
#6 |
|
|
||
GS — ... |
#7 |
|
|
||
|
#8 |
RAX
RCX
RDX
RBX
RSP
RBP
RSI
RDI
R8
|
|
|
EAX |
AH #4 |
AL |
AX |
|
|
|
|
|
|
|
|
|
|
|
ECX |
CH #5 |
CL |
CX |
|
|
|
|
|
|
|
|
|
|
|
EDX |
DH #6 |
DL |
DX |
|
|
|
|
|
|
|
|
|
|
|
EBX |
BH #7 |
BL |
BX |
|
|
|
|
|
|
|
|
|
|
|
ESP |
SP |
SPL |
|
|
|
|
|
|
EBP |
BP |
BPL |
|
|
|
|
|
|
|
|
|
ESI |
SI |
SIL |
|
|
|
|
|
|
EDI |
DI |
DIL |
|
|
|
|
|
|
R8D |
R8W |
R8B |
|
|
|
|
|
|
... |
|
|
#15 |
|
|
|
|
R15 |
R15D |
R15WR15B |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ноль для 32х битовых AH..BH доступны операций в инструкциях без REX
SPL..BPL только с REX
Регистры SSE (SIMD)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MXCSR |
|
|
|
|
|
|
|||
|
|
|
|
|
31 |
|
... |
|
16 15 |
14 13 |
12 |
|
11 |
10 |
9 |
8 |
7 |
6 5 |
|
4 |
3 |
2 |
1 |
0 |
|
||||||||
|
|
|
|
|
|
|
|
|
0...0 (резерв) |
|
|
FZ |
RC |
PM |
|
UM |
OM |
ZM |
DM |
I M |
DAZ |
PE |
|
UE |
OE |
ZE |
DE |
I E |
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
XMM0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
XMM1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
XMM6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
XMM7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
XMM8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
XMM9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
XMM14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
XMM15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
127 |
|
|
111 |
|
|
|
95 |
|
|
|
79 |
|
|
63 |
|
|
|
|
47 |
|
|
|
31 |
|
|
|
|
15 |
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
|
|
|
63 |
|
|
|
|
|
47 |
|
|
|
|
31 |
|
|
|
|
15 |
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
|
|
|
|
|
63 |
|
|
|
|
|
47 |
|
|
|
|
31 |
|
|
|
|
15 |
|
|
|
|
0 |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
Сегментные регистры |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Регистры FPU/MMX/3DNow! |
|||||||||||||||||||||||||||||||||||||
|
База, Размер, DPL, Тип, Атрибуты |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 14 13 12 11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
|
|
Opcode |
||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
CS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Tag7 |
Tag6 |
Tag5 |
Tag4 |
Tag3 |
Tag2 |
Tag1 |
Tag0 |
|
FPU Tag |
||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||
|
База, Размер, DPL, Тип, Атрибуты |
|
|
|
|
|
SS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FPR0 |
|
|
MMX0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FPR1 |
|
|
MMX1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
База, Размер, DPL, Тип, Атрибуты |
|
|
|
|
|
DS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
База, Размер, DPL, Тип, Атрибуты |
|
|
|
|
|
ES |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FPR6 |
|
|
MMX6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FPR7 |
|
|
MMX7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
База, Размер, DPL, Тип, Атрибуты |
|
|
|
|
|
FS |
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
14 |
13 |
12 |
|
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
FPU Status Word |
||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Busy |
|
C3 |
|
Top |
|
|
С2 |
C1 |
|
|
C0 |
ES |
SF |
PE |
|
UE |
OE |
ZE |
DE |
|
I E |
|
|
|
|
|
|
|
|
|
|||
|
База, Размер, DPL, Тип, Атрибуты |
|
|
|
|
|
GS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
* Серым цветом выделены игнорируемые в x64 атрибуты |
|
|
|
|
|
|
|
|
|
|
|
15 |
14 |
13 |
12 |
|
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
FPU Control Word |
||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
Специальные регистры |
|
|
|
|
|
|
|
|
|
|
|
|
- |
- |
- |
|
X |
|
RC |
PC |
- |
- |
PM |
|
UM |
OM |
ZM |
DM |
|
I M |
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
RIP |
|
|
|
|
|
|
|
|
|
EIP |
|
|
|
IP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FPU Instruction Pointer |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FPU Data Pointer |
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Регистры, специфичные для модели процессора |
||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IDTR (база) |
|
(размер) |
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IA32_FEATURE_CONTROL |
|
|
|
|
|
|
|
|
|
|
|
(резерв) |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GDTR (база) |
|
(размер) |
|
|
|
|
|
|
|
|
|
|
IA32_SYSENTER_CS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(резерв) |
|
|
|
|
(резерв) |
|
CS (SS) |
||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||
|
|
|
|
|
|
База, Размер |
|
|
|
|
|
|
|
|
|
|
LDTR |
|
|
|
|
|
|
|
|
|
|
IA32_SYSENTER_EIP |
|
Расширение до RIP |
|
EIP точки входа |
|
|
|||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IA32_SYSENTER_ESP |
|
Расширение до RSP |
|
ESP точки входа |
|
|
|||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
База, Размер |
|
|
|
|
|
|
|
|
|
|
TR |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
10 |
9 |
8 |
|
|
|
7..1 |
0 |
|
|||||||||
|
|
|
|
|
|
|
|
|
Управляющие регистры |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IA32_EFER |
|
|
|
|
|
|
|
(резерв) |
|
|
|
|
EDBE |
LMA |
- |
LME |
|
|
- |
SCE |
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IA32_STAR |
|
|
SYSRET CS (SS) |
SYSCALLCS (SS) |
|
|
|
(резерв) |
|
|
|
|
||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
RFLAGS |
|
|
|
|
|
|
|
EFLAGS |
|
FLAGS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IA32_LSTAR |
|
|
|
|
|
|
|
|
|
RIP точки входа |
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IA32_FMASK |
|
|
|
|
|
|
|
(резерв) |
|
|
|
|
|
SYSCALLEFLAGS mask |
|
|
|||||||||||||||||
31..22 |
|
|
21 |
20 |
19 |
|
18 |
17 |
|
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
|
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
|
|
|
|
|
IA32_FS_BASE |
|
|
База FS режима пользователя (3 кольцо) |
|
|
|||||||||||||||||||||||||||||||||
|
0..0 |
|
ID |
VIP |
VIF |
|
AC |
VM |
|
RF |
0 |
|
NT |
IOPL |
OF |
DF |
IF |
|
TF |
SF |
ZF |
0 |
AF |
0 |
PF |
1 |
|
CF |
|
|
|
|
|
|
|
IA32_GS_BASE |
|
|
База GS режима пользователя (3 кольцо) |
|
|
||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IA32_KERNEL_GS_BASE |
|
|
|
|
|
База GS режима ядра (0 кольцо) |
|
|
|
|
||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
CR0 |
|
|
|
MSW |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
… и многие другие |
|
|
|
|
|
|
|
|
||||||||||
31 |
30 |
29 |
28 |
... |
19 |
|
18 |
17 |
|
16 |
15 |
|
|
|
... |
|
6 |
5 |
|
4 |
3 |
2 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Тестовые регистры (проверка TLB) |
|||||||||||||||||||||||||||||||
PG |
CD |
|
NW |
|
... |
|
|
AM |
- |
|
WP |
- |
|
- |
- |
|
- |
- |
- |
NE |
|
ET |
TS |
EM |
MP |
PE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TR6 (команда) |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
|
... |
|
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
|
2 |
1 |
0 |
|
||||||
|
|
|
|
|
|
(резерв) |
|
|
|
|
|
|
|
CR1 (резерв) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
лин. адрес |
V |
D |
|
D# |
U |
U# |
W |
W# |
- |
- |
|
- |
- |
C |
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CR2 адрес стр. отказа |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CR3 каталог страниц |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TR7 (данные) |
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
|
... |
|
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
|
2 |
1 |
0 |
|
|||||||||||||||
63 |
|
... |
52 |
51 |
... |
|
40 |
|
39 |
|
... |
32 |
31 |
|
|
|
|
… (20 бит) |
|
|
|
12 |
11 |
|
... |
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
физ. адрес |
- |
- |
|
- |
- |
- |
- |
- |
HT |
REP |
- |
- |
|
|||||||||||||||||||||||||||||||||||
|
|
0 |
|
|
<...> |
|
|
|
|
|
Базовый адрес каталога страниц |
|
|
|
|
|
(резерв) |
|
|
|
|
|
|
|
|
|
|
|
|
Регистры аппаратной отладки |
|||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
IA32+PAE: |
|
|
Базовый адрес каталога страниц |
PCD |
PWT |
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DR0 адрес останова #0 |
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
CR4 (Pentium) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DR1 адрес останова #1 |
|
|
|||||||||||||||||
31 |
... |
18 |
17 |
16 |
15 |
|
14 |
13 |
|
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
|
4 |
3 |
2 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DR2 адрес останова #2 |
|
|
||||||||||||||||||||||||||||||||||
- |
... |
OSX |
- |
- |
- |
|
SM |
VM |
|
0 |
0 |
|
OSX |
OSF |
PCE |
PGE |
MCE |
PAE |
PSE |
DE |
TSD |
PVI |
VME |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DR3 адрес останова #3 |
|
|
|||||||||||||
SAVE |
|
XE |
|
|
MME |
XSR |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DR6 состояние |
|
|
|
|
||||||||
|
|
|
|
|
|
CR8 (TPR) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
|
... |
|
16 |
15 |
14 |
13 |
12 |
11 |
... |
4 |
3 |
|
2 |
1 |
0 |
|
||||||||||||
63 |
|
|
|
|
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
|
|
|
4 |
3 |
2 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
- |
|
|
|
|
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
|
|
|
- |
|
TPL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1...1 |
|
|
Ts |
|
Tr |
Ex |
0 |
|
1...1 |
|
#3 |
|
#2 |
#1 |
#0 |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
XCR0 (XFEM) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DR7 управление |
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
62 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
1 |
0 |
|
|
|
31 |
28 |
26 |
24 |
22 |
|
20 |
18 |
|
|
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
|
2 |
1 |
0 |
|
|||||||||||||||
VEX |
0 |
|
|
|
|
|
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
|
|
0 |
SSE |
FPU |
|
|
|
len #3 |
r/w #3 |
len #2 |
r/w #2 |
len#1 |
r/w #1 |
len #0 |
r/w #0 |
0 |
0 |
|
|
GP |
0 |
0 |
1 |
1 |
1 |
e3 |
t3 |
|
e2 |
t2 |
e1 |
|
t1 |
|
e0 |
t0 |
|
CR0: |
|
FPU Status Word and Control Word: |
|
PG |
- включение страничного преобразования |
IE/IM |
- флаг и маска исключения недопустимой операции SSE |
CD |
- запрет кэша |
DE/DM |
- флаг и маска исключения денормализации SSE |
NW |
- запрет сквозной записи |
ZE/ZM |
- флаг и маска исключения деления на ноль SSE |
AM |
- автоматическая проверка выравнивания |
OE/OM - флаг и маска исключения переполнения SSE |
|
WP |
- запрет записи из нулевого кольца в страницы пользовательского режима, |
UE/UM - флаг и маска исключения исчезновения порядка (underflow) SSE |
|
|
доступные только для чтения (чувствительность режима ядра к write-protect |
PE/PM |
- флаг и маска исключения потери точности SSE |
|
пользовательского режима) |
SF |
- ошибка стека сопроцессора |
NE |
- ”численная ошибка FPU” → (0: IRQ #13 (MS-DOS); 1: исключение 0x10) |
ES |
- итоговый признак ошибки |
ET |
- наличие встроенного сопроцесора |
С0..С3 |
- флаги сопроцессора |
TS |
- было обращение к FPU (FPU,MMX,SSE) после переключения задач |
Top |
- указатель на вершину стека сопроцессора |
EM |
- включение режима эмуляции FPU |
Busy |
- флаг занятости сопроцессора |
MP |
- управляет синхронизацией с FPU |
RC |
- управление округлением (00=ближайший, 01=вниз, 10=вверх, 11=вниз |
PE |
- включение защищенного режима (сегментное преобразование) |
|
по модулю, «округление к нулю») |
CR3: |
|
PC |
- управление точностью (длина мантиссы в битах 00=24, 01=резерв, |
|
|
10=53, 11=64) |
|
PCD |
- запрет кэширования корневой таблицы страниц |
X |
- управление представлением бесконечности (игнорируется после |
PWT |
- запрет отложенной записи (write-back) в корневую таблицу страниц |
|
80287) |
|
(разрешение сквозной записи write-through) |
|
|
Регистры FPU/MMX/3DNow!
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
Tag7 |
Tag6 |
Tag5 |
Tag4 |
Tag3 |
Tag2 |
Tag1 |
Tag0 |
|
FPU Tag |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FPU Tag Register:
Tagi - состояние элемента стека сопроцессора 00=допустимое, 01=ноль, 10=специальное (nan,unsup, inf, denom), 11=не используется
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
FPU Status Word |
|
|
||||||||||||||||
Busy |
C3 |
|
Top |
|
С2 |
C1 |
C0 |
ES |
SF |
PE |
UE |
OE |
ZE |
DE |
I E |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
FPU Control Word |
|
|
||||||||||||||||
- |
- |
- |
X |
RC |
PC |
- |
- |
PM |
UM |
OM |
ZM |
DM |
I M |
|
|
CR4: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VME |
- обрабатывать прерывания и исключения V86 непосредственно в 8086 режиме |
|||||||||||||||||||||
|
(не используя монитор защищ. режима, см. также VIF) |
|
|
|
|
|
|
|||||||||||||||
PVI |
- разрешить аппаратную поддержку виртуальных прерываний (см. также VIF) |
|||||||||||||||||||||
TSD |
- разрешить RDTSC только из нулевого кольца защиты |
|
|
|
|
|
|
|||||||||||||||
DE |
- генерировать исключение (недопустимая инструкция) при попытке доступа к |
|||||||||||||||||||||
|
DR4 и DR5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PSE |
- разрешено использование больших страниц |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
PAE |
- разрешен режим PAE (расширение физических адресов до 36 разрядов в IA- |
|||||||||||||||||||||
|
32) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MCE |
- Machine-Check Enable |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
PGE |
- разрешено использование глобальных страниц (см. бит G записей PTE-PDE) |
|||||||||||||||||||||
PCE |
- разрешить RDPMC в любом кольце защиты |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
OSFXSR - разрешить операционной системе поддержку инструкций FXSAVE и |
|
|
||||||||||||||||||||
|
FXRSTOR (сохранение и восстановление регистров FPU-SSE) |
|
|
|
|
|
||||||||||||||||
OSXMME(XCPT) - разрешить операционной системе поддержку немаскируемых |
||||||||||||||||||||||
|
исключение SIMD (SSE) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
VMXE |
- разрешена поддержка виртуальных машин |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
SMXE |
- разрешена поддержка безопасных режимов |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
OSXSAVE - разрешить операционной системе поддержку инструкций XSAVE, XGETBV, |
||||||||||||||||||||||
|
XRSTOR |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MXCSR |
|
|
|
|
|
|
|||
|
31 |
... |
16 |
15 |
14 13 |
12 |
11 |
10 |
|
9 |
8 |
7 6 5 |
|
4 |
3 |
2 |
1 |
0 |
|
|||
|
|
|
0...0 (резерв) |
|
FZ |
RC |
PM |
UM |
OM |
|
ZM |
DM |
I M |
DAZ |
PE |
|
UE |
OE |
ZE |
DE |
I E |
|
MXCSR: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
IE/IM |
- флаг и маска исключения недопустимой операции SSE |
|
|
|
|
|
|
|||||||||||||||
DE/DM |
- флаг и маска исключения денормализации SSE |
|
|
|
|
|
|
|
|
|
|
|
||||||||||
ZE/ZM |
- флаг и маска исключения деления на ноль SSE |
|
|
|
|
|
|
|
|
|
|
|
||||||||||
OE/OM - флаг и маска исключения переполнения SSE |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
UE/UM - флаг и маска исключения исчезновения порядка (underflow) SSE |
|
|
|
|
||||||||||||||||||
PE/PM |
- флаг и маска исключения потери точности SSE |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
DAZ |
- считать деномализованные исходные числа нулями |
|
|
|
|
|
|
|
|
|
|
|||||||||||
RC |
- управление округлением (00=ближайший, 01=вниз, 10=вверх, 11=вниз по |
|||||||||||||||||||||
|
модулю, «округление к нулю») |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
FZ |
- обнулять при исчезновении порядка и маскированном прерывании |
|
|
|
||||||||||||||||||
|
исчезновения (MXCSR.UM==1) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Регистры, специфичные для модели процессора |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MSR IA32_EFER: |
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SCE |
|
- разрешены инструкции SYSCALL/SYSRET (не путать с |
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SYSENTER/SYSEXIT) |
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LME |
|
- разрешен 64х разрядный режим (long mode) |
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LMA |
|
- используется 64х разрядный режим (long mode) |
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
EDBE - разрешен бит запрета исполнения (EDB, EXB) |
11 |
10 |
9 |
8 |
7..1 |
0 |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
Управляющие регистры |
|
|
|
|
|
|
|
|
|
IA32_EFER |
|
(резерв) |
|
EDBE |
LMA |
- |
LME |
- |
SCE |
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
EFLAGS: |
|
|
|
|
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
RFLAGS |
|
|
|
|
|
|
|
|
EFLAGS |
|
FLAGS |
|
|
|
|
|
|
|
|
|
|
CF |
- перенос |
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PF |
- четность |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
31..22 |
|
|
21 |
20 |
19 |
18 |
17 |
|
16 |
|
15 |
|
14 |
13 |
12 |
11 |
10 |
9 |
|
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
|
|
|
AF |
- полупереполнение |
|
|
|
|
|
|
||||||
|
0..0 |
|
|
ID |
VIP |
VIF |
|
AC |
VM |
|
RF |
|
0 |
|
NT |
IOPL |
OF |
DF |
IF |
|
TF |
SF |
ZF |
0 |
AF |
0 |
PF |
1 |
CF |
|
|
|
|
|
ZF |
- ноль |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SF |
- отрицательный результат |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
CR0 |
|
|
|
MSW |
|
|
|
|
|
|
|
|
|
|
|
TF |
- включена трассировка |
|
|
|
|
|
|
||||||
31 |
30 |
29 |
28 ... |
19 |
18 |
17 |
|
16 |
|
15 |
|
|
|
... |
|
6 |
5 |
|
4 |
3 |
2 |
1 |
0 |
|
|
|
|
|
|
|
|
|
IF |
- разрешены прерывания |
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DF |
- направление строковых инструкций |
|
|
|
|||||||||||||||||||||||||||
PG |
CD |
|
NW |
|
... |
|
|
AM |
- |
|
WP |
|
- |
|
- |
- |
|
- |
- |
- |
NE |
|
ET |
TS |
EM |
MP |
PE |
|
|
|
|
|
|
|
|
|
OF |
- переполнение |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IOPL |
- уровень привилегий операций ввода-вывода |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NT |
- вложенная задача |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RF |
- флаг возобновления (влияет на обработку |
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
прерываний отладчика) |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CR3 каталог страниц |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VM |
- режим V86 |
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
63 ... |
52 |
51 |
|
... |
40 |
|
39 |
|
... |
|
32 |
31 |
|
|
|
|
… (20 бит) |
|
|
|
12 |
11 |
|
... |
|
|
0 AC |
- контроль выравнивания (V86) |
|
|
|
|
|
||||||||||||||
|
|
0 |
|
|
<...> |
|
|
|
|
|
|
Базовый адрес каталога страниц |
|
|
|
|
(резерв) |
|
|
VIF |
- флаг виртуальных прерываний (аналог IF) |
|
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
IA32+PAE: Базовый адрес каталога страниц |
|
PCD |
PWT |
0 |
0 |
0 |
VIP |
- ожидающее виртуальное прерывание |
|
|
||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ID |
- флаг разрешения инструкций CPUID |
|
|
||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0CR4 (Pentium)
31 |
... |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 9 |
8 7 6 5 4 |
3 |
2 |
1 |
0 |
CR8: |
|
|||||||
- |
... |
OSX |
- |
- |
- |
SM |
VM |
0 |
0 |
|
OSX |
OSF |
PCE |
PGE |
MCE |
PAE |
PSE |
DE |
TSD |
PVI |
VME |
|
||
|
TPL |
- уровень приоритета задачи (управляет блокировкой |
||||||||||||||||||||||
SAVE |
XE |
|
MME |
XSR |
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
прерываний) |
|
|
|
|
|
CR8 (TPR) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
XCR0 (XFEM «X- Feature Enabled Mask»): |
|||||
63 |
|
|
|
|
|
|
|
... |
|
|
|
|
4 |
3 |
2 |
1 |
0 |
|||||||
|
|
|
|
|
|
|
|
|
|
|
VEX |
- (резерв) будет использован для расширения XFEM за 63 бита |
||||||||||||
- |
|
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
|
- |
|
|
TPL |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SSE |
- если 1, то XSAVE/XRSTOR поддерживают регистры MXCSR и |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
XCR0 (XFEM) |
|
|
|
|
|
|
|
|
|
|
|
XMM... |
|||||||
63 |
62 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
1 |
0 |
FPU |
- равен 1 (XSAVE/XRESTOR поддерживают регистры FPU/MMX) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
VEX |
0 |
|
|
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
0 |
|
SSE |
FPU |
|
|
Формат инструкции |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
не более 15 байт |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64х разрядные смещения допустимы |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
только в инструкциях mov, |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
[префиксы] |
|
[префикс REX] |
|
|
|
|
|
|
КОП |
|
|
|
|
|
|
|
|
[Mod R/M] |
|
|
[SIB] |
|
[смещение] |
|
|
|
[данные] |
|
|
|
|
работающих с аккумулятором; т.е.: |
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mov ax,[1122334455667788] |
|||||||||||||||||||||||||||||
|
|
|
(1..4 байт) |
|
|
(1 байт) |
|
|
|
|
|
|
(1..3 байта) |
|
|
|
(1 байт) |
|
|
(1 байт) |
|
(1,2,4,8 байт) |
|
|
(1,2,4,8 байт) |
|
|
|
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mov eax,[1122334455667788] |
|||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
Группа 1 (блокировка и повторы): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 6 |
5 4 3 |
2 1 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mov [1122334455667788], ax |
||||||||||||||
|
|
|
|
|
|
|
|
|
7 |
6 |
5 |
|
4 |
3 |
|
2 |
1 |
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mov [1122334455667788], eax |
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
F0 – lock * |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
коп |
|
|
|
|
ds |
w |
|
|
Mod |
Rn/ДКОП |
R/M |
|
|
|
7 6 |
5 4 3 2 1 0 |
|
|
|
|
|
|
|
64х разрядные данные используются |
|||||||||||||||||
F2 – repne (repnz) ** *** |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
коп |
|
|
|
|
reg# |
|
|
|
Rn |
- номер регистра |
|
Scale |
Index |
Base |
|
|
|
|
|
|
|
только инструкциями |
||||||||||||||||||||
F3 – rep, repe (repz) ** *** |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
коп |
|
|
|
|
|
|
|
ДКОП |
- расширение КОП |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
Группа 2 (смена сегмента): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mov Reg, immediate |
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
КОП |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
2E – CS: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SIB: |
|
|
|
|
|
|
|
|
|
|
|
|
|
с префиксом rex.w==1; например: |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
0F КОП |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
36 – SS: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
0F КОП ДКОП |
|
|
|
|
|
|
|
|
|
|
|
|
|
[#Base + #Index*2Scale] |
|
|
|
|
|
|
mov rax,1122334455667788 |
||||||||||||||||||||||||
3E – DS: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||
26 – ES: |
|
|
|
|
|
|
|
|
|
|
|
|
66/F2/F3 [REX] 0F КОП |
|
|
|
|
|
|
Base и Index задают номера 32х или 64х разрядных регистров. |
|||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
66/F2/F3 [REX] 0F КОП ДКОП |
|
|
|
||||||||||||||||||||||||||||||||||||||||||
64 – FS: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
65 – GS: |
(Jcc) **** |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
В качестве Base может быть задан любой регистр. |
|
|
|||||||||||||||||||||||
2E – branch not taken |
|
7 |
6 |
5 |
|
4 |
3 |
2 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
При задании Base номером регистра #5 (EBP/RBP), будет использован режим |
|||||||||||||||||||||||||||||
3E – branch taken (Jcc) **** |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||
|
|
|
|
0 |
1 |
0 |
|
0 |
W |
|
R |
X |
B |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||
Группа 3 (размер операнда): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
адресации, определяемый Mod: |
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||
|
|
|
REX префиксы перекрывают инструкции с кодами 40...4F |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||
66 – смена размера данных (16/32) *** |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
00 – [#Index*2Scale + смещ32] (в x64 SIB=00.100.101 обозначает [смещ32] без RIP) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Группа 4 (размер адреса): |
|
|
|
REX.W – 64х разрядные данные/адреса/регистры |
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||
67 – смена размера адреса (16/32) |
|
REX.R – расширяет Rn в Mod R/M |
|
|
|
|
|
|
01 – [#Index*2Scale + EBP(RBP) + смещ |
|
] |
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
REX.X – расширяет номер индекса в SIB |
|
|
|
8 |
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
REX.B – расширяет номер базового регистра в Mod R/M или в SIB |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
10 – [#Index*2Scale + EBP(RBP) + смещ ] |
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Index, равный 4, обозначает отсутствие индекса (в роли Index нелья |
|||||||||||||||||||
|
|
|
|
|
|
|
|
MOD (16ти разрядные инструкции): |
|
|
|
использовать ESP/RSP). |
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||
|
|
|
R/M |
|
|
00 |
|
|
|
|
01 |
|
|
|
|
|
|
|
|
|
|
10 |
|
|
|
|
11 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MOD (32х разрядные инструкции): |
|
|
|||||||||||||
|
000 |
|
[bx+si] |
|
[смещ8+bx+si] |
[смещ16+bx+si] |
регистр #0 |
|
|
|
|
R/M |
|
|
|
00 |
|
|
|
01 |
|
|
|
|
10 |
|
11 |
|
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
000 |
|
|
|
[EAX] |
|
[смещ8+EAX] |
[смещ32+EAX] |
|
регистр #0 |
|
||||||||||||||||||||||||||||||||||||
|
001 |
|
[bx+di] |
|
[смещ8+bx+di] |
[смещ16+bx+di] |
регистр #1 |
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
001 |
|
|
|
[ECX] |
|
[смещ8+ECX] |
[смещ32+ECX] |
|
регистр #1 |
|
||||||||||||||||||||||||||||||||||||
|
010 |
|
[bp+si] |
|
[смещ8+bp+si] |
[смещ16+bp+si] |
регистр #2 |
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||
|
|
|
|
010 |
|
|
|
[EDX] |
|
[смещ8+EDX] |
[смещ32+EDX] |
|
регистр #2 |
|
|||||||||||||||||||||||||||||||||||||||||||
|
011 |
|
[bp+di] |
|
[смещ8+bp+di] |
[смещ16+bp+di] |
регистр #3 |
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||
|
|
|
|
011 |
|
|
|
[EBX] |
|
[смещ8+EBX] |
[смещ32+EBX] |
|
регистр #3 |
|
|||||||||||||||||||||||||||||||||||||||||||
|
100 |
|
|
[si] |
|
|
[смещ8+si] |
|
|
|
[смещ16+si] |
регистр #4 |
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
|
|
|
SIB |
|
[смещ8+SIB] |
[смещ32+SIB] |
|
регистр #4 |
|
|||||||||||||||||||||||||||||||
|
101 |
|
|
[di] |
|
|
[смещ8+di] |
|
|
|
[смещ16+di] |
регистр #5 |
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
|
|
(RIP+)[смещ32] |
|
[смещ8+EBP] |
[смещ32+EBP] |
|
регистр #5 |
|
|||||||||||||||||||||||||||||||||
|
110 |
|
[смещ16] |
|
|
[смещ8+bp] |
|
|
|
[смещ16+bp] |
регистр #6 |
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
110 |
|
|
|
[ESI] |
|
[смещ8+ESI] |
[смещ32+ESI] |
|
регистр #6 |
|
||||||||||||||||||||||||||||||||
|
111 |
|
[bx] |
|
|
[смещ8+bx] |
|
|
|
[смещ16+bx] |
регистр #7 |
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
|
|
|
[EDI] |
|
[смещ8+EDI] |
[смещ32+EDI] |
|
регистр #7 |
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(*) префикс lock допустим только перед инструкциями
add, adc, and, btc, btr, bts, cmpxchg, cmpxch8b, dec, inc, neg, not, or, sbb, sub, xor, xadd, xchg и только если приёмник размещен в памяти (**) префиксы используются строковыми инструкциями или инструкциями ввода-вывода
(***) префиксы 66, F2 и F3 могут быть обязательными в некоторых инструкциях (расширяют пространство КОП)
(****) используются перед инструкцией условного перехода что бы указать наиболее вероятный путь передачи управления
Существует множественность в задании кодов инструкций и режимов адресации; например, mov eax, [ebp] можно реализовать как:
коп 01.000.101 00000000 коп 10.000.101 00000000 00000000 00000000 00000000
коп 01.000.100 00.100.101 00000000 коп 10.000.100 00.100.101 00000000 00000000 00000000 00000000
коп 00.000.100 00.101.101 00000000 00000000 00000000 00000000
Некоторые инструкции ЦПУ (не включая инструкции FPU, MMX, SSEn и пр.) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||
Манипуляции с регистром флагов (FLAGS/EFLAGS/RFLAGS): |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Общие замечания: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Флаг переноса |
STC; CLC; CMC |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
A) В двухоперандных инструкциях, кроме некоторых специальных случаев: |
|
Флаг направления |
STD; CLD |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1. один операнд - обязательно регистр; другой операнд — регистр, память или константа. |
Флаг прерываний |
STI; CLI |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2. направление пересылки определяется вторым битом кода операции (КОП.ds) |
Перенос флагов |
LAHF; SAHF |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3. размер данных - младшим битом кода операции (КОП.w), изменяющим размер данных слово/байт |
Сохранение/загрузка регистра флагов |
PUSHF; |
|
|
|
PUSHFD; |
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
POPFD |
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4. некоторые комбинации при этом оказываются недопустимыми. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
POPF; |
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
B) Часто существует несколько различных кодов операции, сопоставленных одной мнемонике. |
Передачи управления: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Безусловные переходы |
JMP (far; near; short) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Например, команда MOV соответствет различным инструкциям с различными кодами; помимо «общей |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
пересылки» (РОН-РОН, РОН-память, РОН-константа), существуют команды для пересылки данных в/из Условные переходы |
Jcc |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
JECXZ |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
управляющих регистров CR.., сегментных регистров, тестовых регистров, отладочных регистров и т.п. |
Условный переход если (E)CX==0 |
JCXZ; |
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C) Одна и та же мненомоника может переводиться в разные машинные коды в зависимости от режима |
Циклы (медленно (!) в Pentium+) |
LOOP; |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LOOPE; LOOPZ; |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
работы процессора, т.е. при написании ассемблерного кода нужно указывать транслятору, в каком |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LOOPNE; LOOPNZ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
режиме этот код будет выполняться. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Процедуры |
CALL; RET (far; near) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
D) один и тот же машинный код, будучи выполнен в разных режимах работы процессора, может |
ENTER; |
|
|
LEAVE; |
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BOUND |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
означать разные вещи; в ассемблере ему могут соответствовать разные формы записи (скажем, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
PUSHF/PUSHD). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Прерывания |
INT; INTO; INT 3; IRET; |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
E) некоторые инструкции допустимы только в определенных условиях; некоторые группы инструкций |
SYSENTER; |
|
|
SYSEXIT; |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SYSCALL; |
|
|
|
|
SYSRET |
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
могут быть выполнены только в защищенном режиме и только в привелигированном коде. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Арифметические: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Передачи данных: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Аддитивные |
|
ADD; ADC; SUB; SBB; INC; DEC; CMP; |
XADD; |
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Пересылка |
MOV |
|
CMPXCHG; |
|
CMPXCHG8B; |
|
CMPXCHG16B |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Условная пересылка |
CMOV |
cc |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Смена знака |
|
NEG |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
Расширяющая пересылка |
MOVSX; |
|
|
|
|
MOVZX |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Мультипликативные |
|
MUL; IMUL; DIV; IDIV |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||
Пересылка после перестановки байтов |
MOVBE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Коррекции BCD арифметики |
DAA; DAS; AAA; AAS; AAM; AAD |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Обмен |
XCHG |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Логические |
|
AND; OR; XOR; NOT; TEST; |
SET |
cc |
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Обмен байтов в слове |
BSWAP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Сдвиговые |
|
SAR; SHR; SAL; SHL; ROR; |
RCR; |
|
|
ROL; RCL |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Работа со стеком |
PUSH; |
POP; |
PUSHA; |
|
|
POPA |
|
|
|
|
|
|
Битовые |
|
BT; |
|
BTS; |
|
BTR; |
|
|
|
BTC; |
|
|
BSF; |
|
BSR |
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Расширение разрядности |
CBW; CWD; |
CWDE; |
|
|
|
|
CDQ; |
|
|
|
CDQE |
|
|
|
|
Специальные: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||
Ввод-вывод |
IN; |
INSB; |
|
|
INSW; |
|
|
INSD; |
|
|
|
|
|
|
|
|
|
|
|
|
Получить эффективный адрес |
LEA |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
OUT; |
OUTSB; |
|
OUTSW; |
|
OUTSD |
|
|
|
|
|
Нет операции |
|
NOP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Загрузка дальних указателей |
LDS; |
LSS; LES; |
LFS; |
|
LGS |
|
|
|
|
|
|
|
Неизвестная инструкция |
|
UD2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||
Трансляция |
XLAT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Идентификация процессора |
CPUID |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||
Чтение/запись MSR |
RDMSR; |
|
WRMSR |
|
|
|
|
|
|
|
|
|
|
|
R/W регистров системных сегментов |
LGDT; |
|
|
|
SGDT; |
|
|
|
LLDT; |
|
SLDT; |
|
LIDT; |
|
SIDT; |
|
LTR; |
|
STR |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Чтение счетчиков производительности |
RDPMC |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
R/W управляющих регистров |
MOV; |
|
|
LMSW; |
|
|
|
|
SMSW; |
|
|
XGETBV; |
|
XSETBV |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Чтение временной отметки |
RDTSC |
|
|
|
|
|
|
|
|
|
|
|
|
|
Очистка флага переключения задач |
CLTS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||
Сохранение/восстановление состояния |
|
|
|
|
|
|
|
|
|
|
|
|
Коррекция RPL |
|
ARPL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
XSAVE; XRSTOR |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||
ЦПУ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Загрузка прав доступа |
|
LAR |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||
Строковые: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Загрузка предела сегмента |
LSL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||
Пересылки |
MOVSB; MOVSW; |
MOVSD; |
|
MOVSQ |
|
Проверка прав доступа |
|
VERR; |
|
|
VERW |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Сравнения |
CMPSB; CMPSW; |
|
CMPSD; |
|
CMPSQ |
|
|
Обмен базы GS с MSR |
|
SWAPGS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Поиска символа |
SCASB; SCASW; |
SCASD |
|
|
|
R/W отладочных регистров |
MOV |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Загрузки |
LODSB; LODSW; |
LODSD; |
|
LODSQ |
|
Инвалидация кэша |
|
INVD; |
|
WBINVD |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Сохранения |
STOSB; STOSW; |
|
STOSD; |
|
STOSQ |
|
Инвалидация TLB |
|
INVLPG |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Префиксы повтора |
REP; REPE; REPZ; |
REPNE; REPNZ |
Останов процессора |
|
HLT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|