Intel IA-32 Manuale Utente

Pagina di 636
Vol. 3A
iii
CONTENTS FOR VOLUME 3A AND 3B
CHAPTER 1
ABOUT THIS MANUAL
1.1
IA-32 PROCESSORS COVERED IN THIS MANUAL . . . . . . . . . . . . . . . . . . . . . . .  1-1
1.2
OVERVIEW OF THE SYSTEM PROGRAMMING GUIDE. . . . . . . . . . . . . . . . . . . .  1-2
1.3
NOTATIONAL CONVENTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  1-4
1.3.1
Bit and Byte Order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-5
1.3.2
Reserved Bits and Software Compatibility  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-5
1.3.3
Instruction Operands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-6
1.3.4
Hexadecimal and Binary Numbers  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-7
1.3.5
Segmented Addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-7
1.3.6
Syntax for CPUID, CR, and MSR Values  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-7
1.3.7
Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-8
1.4
RELATED LITERATURE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  1-9
CHAPTER 2
SYSTEM ARCHITECTURE OVERVIEW
2.1
OVERVIEW OF THE SYSTEM-LEVEL ARCHITECTURE  . . . . . . . . . . . . . . . . . . .  2-2
2.1.1
Global and Local Descriptor Tables  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-5
2.1.1.1
Global and Local Descriptor Tables in IA-32 Mode  . . . . . . . . . . . . . . . . . . . . .2-5
2.1.2
System Segments, Segment Descriptors, and Gates . . . . . . . . . . . . . . . . . . . . . .2-5
2.1.2.1
Gates in IA-32e Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-6
2.1.3
Task-State Segments and Task Gates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-6
2.1.3.1
Task-State Segments in IA-32e Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-7
2.1.4
Interrupt and Exception Handling  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-7
2.1.4.1
Interrupt and Exception Handling IA-32e Mode . . . . . . . . . . . . . . . . . . . . . . . .2-7
2.1.5
Memory Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-7
2.1.5.1
Memory Management in IA-32e Mode   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-8
2.1.6
System Registers  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-8
2.1.6.1
System Registers in IA-32e Mode  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-9
2.1.7
Other System Resources  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-10
2.2
MODES OF OPERATION  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  2-10
2.3
SYSTEM FLAGS AND FIELDS IN THE EFLAGS REGISTER  . . . . . . . . . . . . . . .  2-12
2.3.1
System Flags and Fields in IA-32e Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-14
2.4
MEMORY-MANAGEMENT REGISTERS  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  2-14
2.4.1
Global Descriptor Table Register (GDTR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-15
2.4.2
Local Descriptor Table Register (LDTR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-15
2.4.3
IDTR Interrupt Descriptor Table Register  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-16
2.4.4
Task Register (TR)  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-16
2.5
CONTROL REGISTERS  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  2-16
2.5.1
CPUID Qualification of Control Register Flags . . . . . . . . . . . . . . . . . . . . . . . . . .2-24
2.6
SYSTEM INSTRUCTION SUMMARY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  2-24
2.6.1
Loading and Storing System Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-25
2.6.2
Verifying of Access Privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-26
2.6.3
Loading and Storing Debug Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-27
2.6.4
Invalidating Caches and TLBs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-27
2.6.5
Controlling the Processor  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-27
2.6.6
Reading Performance-Monitoring and Time-Stamp Counters  . . . . . . . . . . . . . . 2-28
2.6.6.1
Reading Counters in 64-Bit Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-29