Vol. 2A 3-541
INSTRUCTION SET REFERENCE, A-M
LGDT/LIDT—Load Global/Interrupt Descriptor Table Register
LGDT/LIDT—Load Global/Interrupt Descriptor Table Register
Description
Loads the values in the source operand into the global descriptor table register
(GDTR) or the interrupt descriptor table register (IDTR). The source operand speci-
fies a 6-byte memory location that contains the base address (a linear address) and
the limit (size of table in bytes) of the global descriptor table (GDT) or the interrupt
descriptor table (IDT). If operand-size attribute is 32 bits, a 16-bit limit (lower 2
bytes of the 6-byte data operand) and a 32-bit base address (upper 4 bytes of the
data operand) are loaded into the register. If the operand-size attribute is 16 bits,
a 16-bit limit (lower 2 bytes) and a 24-bit base address (third, fourth, and fifth byte)
are loaded. Here, the high-order byte of the operand is not used and the high-order
byte of the base address in the GDTR or IDTR is filled with zeros.
The LGDT and LIDT instructions are used only in operating-system software; they are
not used in application programs. They are the only instructions that directly load a
linear address (that is, not a segment-relative address) and a limit in protected
mode. They are commonly executed in real-address mode to allow processor initial-
ization prior to switching to protected mode.
In 64-bit mode, the instruction’s operand size is fixed at 8+2 bytes (an 8-byte base
and a 2-byte limit). See the summary chart at the beginning of this section for
encoding data and limits.
See “SGDT—Store Global Descriptor Table Register” in Chapter 4, Intel® 64 and
IA-32 Architectures Software Developer’s Manual, Volume 2B, for information on
storing the contents of the GDTR and IDTR.
Operation
IF Instruction is LIDT
THEN
IF OperandSize
= 16
THEN
IDTR(Limit) ← SRC[0:15];
IDTR(Base) ← SRC[16:47] AND 00FFFFFFH;
ELSE IF 32-bit Operand Size
THEN
Opcode Instruction 64-Bit
Mode
Compat/
Leg Mode
Description
0F 01 /2 LGDT m16&32 N.E. Valid Load m into GDTR.
0F 01 /3 LIDT m16&32 N.E. Valid Load m into IDTR.
0F 01 /2 LGDT m16&64 Valid N.E. Load m into GDTR.
0F 01 /3 LIDT m16&64 Valid N.E. Load m into IDTR.