Intel 253668-032US Webcam User Manual


 
Vol. 3 18-1
CHAPTER 18
MIXING 16-BIT AND 32-BIT CODE
Program modules written to run on IA-32 processors can be either 16-bit modules or
32-bit modules. Table 18-1 shows the characteristic of 16-bit and 32-bit modules.
The IA-32 processors function most efficiently when executing 32-bit program
modules. They can, however, also execute 16-bit program modules, in any of the
following ways:
In real-address mode.
In virtual-8086 mode.
System management mode (SMM).
As a protected-mode task, when the code, data, and stack segments for the task
are all configured as a 16-bit segments.
By integrating 16-bit and 32-bit segments into a single protected-mode task.
By integrating 16-bit operations into 32-bit code segments.
Real-address mode, virtual-8086 mode, and SMM are native 16-bit modes. A legacy
program assembled and/or compiled to run on an Intel 8086 or Intel 286 processor
should run in real-address mode or virtual-8086 mode without modification. Sixteen-
bit program modules can also be written to run in real-address mode for handling
system initialization or to run in SMM for handling system management functions.
See
Chapter 17, “8086 Emulation,” for detailed information on real-address mode
and virtual-8086 mode; see Chapter 26, “System Management Mode,” for informa-
tion on SMM.
This chapter describes how to integrate 16-bit program modules with 32-bit program
modules when operating in protected mode and how to mix 16-bit and 32-bit code
within 32-bit code segments.
Table 18-1. Characteristics of 16-Bit and 32-Bit Program Modules
Characteristic 16-Bit Program Modules 32-Bit Program Modules
Segment Size 0 to 64 KBytes 0 to 4 GBytes
Operand Sizes 8 bits and 16 bits 8 bits and 32 bits
Pointer Offset Size (Address
Size)
16 bits 32 bits
Stack Pointer Size 16 Bits 32 Bits
Control Transfers Allowed to
Code Segments of This Size
16 Bits 32 Bits