Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
x64b.pdf
Скачиваний:
72
Добавлен:
10.02.2015
Размер:
4.62 Mб
Скачать

Регистры 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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]