Intel IA-32 User Manual
Page 14

CONTENTS
xiv
Vol. 3A
PAGE
15.2
VIRTUAL-8086 MODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-7
15.2.1
Enabling Virtual-8086 Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15-9
15.2.2
Structure of a Virtual-8086 Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-9
15.2.3
Paging of Virtual-8086 Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15-10
15.2.4
Protection within a Virtual-8086 Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15-11
15.2.5
Entering Virtual-8086 Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15-11
15.2.6
Leaving Virtual-8086 Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15-13
15.2.7
Sensitive Instructions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15-14
15.2.8
Virtual-8086 Mode I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15-14
15.2.8.1
I/O-Port-Mapped I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15-14
15.2.8.2
Memory-Mapped I/O. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15-15
15.2.8.3
Special I/O Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15-15
15.3
INTERRUPT AND EXCEPTION HANDLING
IN VIRTUAL-8086 MODE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-15
15.3.1
Class 1—Hardware Interrupt and Exception Handling
in Virtual-8086 Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15-17
15.3.1.1
Handling an Interrupt or Exception Through a
Protected-Mode Trap or Interrupt Gate . . . . . . . . . . . . . . . . . . . . . . . . . . . .15-17
15.3.1.2
Handling an Interrupt or Exception With an
8086 Program Interrupt or Exception Handler . . . . . . . . . . . . . . . . . . . . . . .15-19
15.3.1.3
Handling an Interrupt or Exception Through a Task Gate . . . . . . . . . . . . . .15-20
15.3.2
Class 2—Maskable Hardware Interrupt Handling in
Virtual-8086 Mode Using the Virtual Interrupt Mechanism . . . . . . . . . . . . . . . .15-20
15.3.3
Class 3—Software Interrupt Handling in Virtual-8086 Mode . . . . . . . . . . . . . . .15-23
15.3.3.1
Method 1: Software Interrupt Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15-25
15.3.3.2
Methods 2 and 3: Software Interrupt Handling . . . . . . . . . . . . . . . . . . . . . . .15-26
15.3.3.3
Method 4: Software Interrupt Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15-26
15.3.3.4
Method 5: Software Interrupt Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15-26
15.3.3.5
Method 6: Software Interrupt Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15-27
15.4
PROTECTED-MODE VIRTUAL INTERRUPTS . . . . . . . . . . . . . . . . . . . . . . . . . . 15-28
CHAPTER 16
MIXING 16-BIT AND 32-BIT CODE
16.1
DEFINING 16-BIT AND 32-BIT PROGRAM MODULES . . . . . . . . . . . . . . . . . . . . 16-2
16.2
MIXING 16-BIT AND 32-BIT OPERATIONS WITHIN A CODE SEGMENT . . . . . 16-2
16.3
SHARING DATA AMONG MIXED-SIZE CODE SEGMENTS . . . . . . . . . . . . . . . . 16-3
16.4
TRANSFERRING CONTROL AMONG MIXED-SIZE CODE SEGMENTS . . . . . . 16-4
16.4.1
Code-Segment Pointer Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-5
16.4.2
Stack Management for Control Transfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-5
16.4.2.1
Controlling the Operand-Size Attribute For a Call . . . . . . . . . . . . . . . . . . . . . 16-7
16.4.2.2
Passing Parameters With a Gate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-7
16.4.3
Interrupt Control Transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-8
16.4.4
Parameter Translation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-8
16.4.5
Writing Interface Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-8
CHAPTER 17
IA-32 ARCHITECTURE COMPATIBILITY
17.1.
IA-32 PROCESSOR FAMILIES AND CATEGORIES . . . . . . . . . . . . . . . . . . . . . . 17-1
17.2.
RESERVED BITS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-2
17.3.
ENABLING NEW FUNCTIONS AND MODES . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-2
17.4.
DETECTING THE PRESENCE OF NEW FEATURES THROUGH SOFTWARE . 17-2
17.5.
INTEL MMX TECHNOLOGY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-3