User's Manual

Vol. 3 19-45
ARCHITECTURE COMPATIBILITY
The performance-monitoring counters are useful for debugging programs, optimizing
code, diagnosing system failures, or refining hardware designs. See Chapter 30,
“Performance Monitoring, for more information on these counters.
19.38 TWO WAYS TO RUN INTEL 286 PROCESSOR TASKS
When porting 16-bit programs to run on 32-bit IA-32 processors, there are two
approaches to consider:
Porting an entire 16-bit software system to a 32-bit processor, complete with the
old operating system, loader, and system builder. Here, all tasks will have 16-bit
TSSs. The 32-bit processor is being used as if it were a faster version of the 16-bit
processor.
Porting selected 16-bit applications to run in a 32-bit processor environment with
a 32-bit operating system, loader, and system builder. Here, the TSSs used to
represent 286 tasks should be changed to 32-bit TSSs. It is possible to mix 16
and 32-bit TSSs, but the benefits are small and the problems are great. All tasks
in a 32-bit software system should have 32-bit TSSs. It is not necessary to
change the 16-bit object modules themselves; TSSs are usually constructed by
the operating system, by the loader, or by the system builder. See
Chapter 18,
“Mixing 16-Bit and 32-Bit Code, for more detailed information about mixing
16-bit and 32-bit code.
Because the 32-bit processors use the contents of the reserved word of 16-bit
segment descriptors, 16-bit programs that place values in this word may not run
correctly on the 32-bit processors.