Extensions
Forms
2 (2 Legacy)
Data
Intel XED v2026.08.23

LGDT loads GDTR, the register that tells the processor where the global descriptor table lies: a linear base address and a 16-bit limit. Its memory operand is the pseudo-descriptor that SGDT stores, the limit in the first 2 bytes and the base after it, 8 bytes of it in 64-bit mode, so 10 in all. It is an operating system’s instruction, run during start-up, first in real mode to prepare the switch to protected mode and again once long mode is active, as Intel’s manual advises, to move to tables meant for 64-bit mode, which may lie above 4 GiB.

The table still matters in 64-bit mode

Segmentation does little in 64-bit mode, but the GDT is still read: the CS descriptor’s L bit selects 64-bit or compatibility mode, a load of SS or a data segment register still reads its descriptor, and LTR finds the task state segment, which holds the stack pointers for interrupts, through a 16-byte descriptor there. The limit counts bytes and is inclusive, so a table of N 8-byte descriptors has the limit 8N - 1. Entry 0 is the null descriptor, which the processor never uses.

What it does not do

LGDT changes GDTR and nothing else. Each segment register keeps the base, limit and attributes that it cached when its selector was loaded, so a new table takes effect only as the segment registers are reloaded: CS through a far jump or return, the others through MOV or POP. LGDT reads only its operand, not the table, so a bad descriptor shows up only when a selector is loaded.

Its operand and its checks

In 64-bit mode the operand is always 10 bytes, whatever the prefixes. Outside it, the operand size decides: a 32-bit base, or with a 16-bit operand size, 24 bits, the top byte of GDTR then cleared. A non-canonical base raises #GP(0) in 64-bit mode, so GDTR never holds one. Both vendors list LGDT among the serializing instructions. Under Intel’s VMX, a hypervisor can make it exit with descriptor-table exiting.

LGDT runs only at CPL 0. The probe runs at CPL 3, and Zen 5 raised #GP in both recorded cases. AMD’s Zen 5 guide lists LGDT as microcoded and among the serializing instructions that close a write-combining buffer. LIDT is the same for the interrupt descriptor table, and LLDT loads a local one.

Forms

Every encoding of LGDT that Intel XED knows, one row per XED instruction form (iform). How to read the notation.
InstructionEncodingRequires
LGDT m16&64 64-bit mode only LGDT_MEMs640F 01 /2Base instruction set
LGDT m16&32 not in 64-bit mode LGDT_MEMs0F 01 /2Base instruction set

Operation

What the forms do, in pseudocode that our tests run against results recorded on real processors. How to read.

Forms only in 64-bit mode
if CPL > 0:
    fault(GP, 0)
v = src.read()                   # 10 bytes: the limit, then the base
if not canonical(v >> 16):
    fault(GP, 0)
gdtr = v                         # the limit in bits 15:0, the base in
                                 # bits 79:16, as SGDT stores them

Run on AMD Zen 5 (EPYC 9645): 2 cases. Every one raised an exception, at CPL 3, where the probe runs.

Forms not in 64-bit mode
if CPL > 0:
    fault(GP, 0)
v = src.read()                   # 6 bytes: the limit, then the base
b = v >> 16                      # 32 bits; with a 66 prefix the low
if OSIZE == 16:                  # 24, the top byte unused
    b &= 0xFFFFFF
gdtr = b << 16 | v & 0xFFFF

Not run on a processor: LGDT m16&32 does not exist in 64-bit mode, where the probe runs.

Operands

What each form reads and writes, as Intel XED records it: the operands of its syntax, in order, and the implicit ones that the syntax does not name. How to read.
OperandKindAction
LGDT m16&64 64-bit mode only LGDT m16&32 not in 64-bit mode
m16&64, m16&32explicitread
GDTRimplicitwrite

Flags

None: XED records no flag that the forms test or change.

Attributes

What else XED records about the forms. How to read.

All forms
privileged: CPL 0 only; may abort a TSX transaction

CPUID and processors

Each form belongs to an XED ISA set. A form can be used when the processor reports every CPUID bit of one of its ISA set's alternatives.

CPUID requirements and processors of the XED ISA sets above. Alternatives are separated by “or”; processors follow XED’s chip model, whose AMD processors end with Zen 2, and the CPU data of this site for Zen 3 to Zen 6.
ISA setCPUIDProcessors
I286REAL

No CPUID bit: part of the base instruction set.

Every x86-64 processor in XED’s model and Zen 3 to Zen 6

More System instructions

Sources

  1. Intel XED v2026.08.23 (commit 0bcb6237345c): forms, encodings, operands, flags, exception classes, attributes, ISA sets, CPUID bits and chip model.
  2. The CPU data of x86-64.net: Zen 3 to Zen 6, from GCC’s -march feature sets and AMD’s Processor Programming References, which the page of each processor cites.
  3. Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 2 (325383-093, September 2026): Volume 2A, page 3-553 (LGDT/LIDT)
  4. Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 3 (325384-093, September 2026)
  5. AMD64 Architecture Programmer's Manual, Volume 2: System Programming (24593, rev. 3.42, March 2024), Wayback Machine copy of AMD's PDF
  6. AMD64 Architecture Programmer's Manual, Volume 3: General-Purpose and System Instructions (24594, rev. 3.36, March 2024), Wayback Machine copy of AMD's PDF
  7. Software Optimization Guide for the AMD Zen5 Microarchitecture (58455, rev. 1.00, August 2024), Wayback Machine copy of AMD's ZIP

The tables are derived from Intel XED, Copyright Intel Corporation, licensed under the Apache License 2.0; x86-64.net converted and reformatted them. The text is our own.