Instruction
LAR
Loads the access rights of the segment descriptor that a selector names and sets ZF, if the descriptor is visible at this privilege level.
- Extensions
- Forms
- 2 (2 Legacy)
- Data
- Intel XED v2026.08.23
Forms
| Instruction | Encoding | Requires |
|---|---|---|
LAR r16/32/64, m16
LAR_GPRv_MEMw | 0F 02 /r | Base instruction set |
LAR r16/32/64, r16/32/64
LAR_GPRv_GPRv | 0F 02 /r | Base instruction set |
Operation
What the forms do, in pseudocode that our tests run against results recorded on real processors. How to read.
sel = src.read() & 0xFFFF # bits 15:0 of a register count
ok = 0
if sel & 0xFFFC and in_table(sel):
d = descriptor(sel) # not null, and within its table
t = d >> 40 & 0xF # the type
if d >> 44 & 1: # S: a code or data segment, any
ok = 1
elif t in (2, 9, 0xB, 0xC): # LDT, TSS, call gate: 16 bytes
if in_table(sel + 8):
hi = descriptor(sel + 8)
ok = hi >> 40 & 0x1F == 0
dpl = d >> 45 & 3
if not (d >> 44 & 1 and t & 0xC == 0xC):
if CPL > dpl or sel & 3 > dpl:
ok = 0 # not visible: conforming code alone
# is visible from any level
if ok:
r = d >> 32 & 0xFFFF00 # bits 23:8 of the second dword
if OSIZE == 16:
r = r & 0xFF00 # type, S, DPL and P; bits 63:16 kept
dest.write(r) # 32 and 64: AVL, L, D/B and G too,
# zero-extended
zf = ok
# bits 19:16 hold the limit's bits 19:16 (AMD's manual and Zen 5);
# Intel's manual leaves them undefined. The check of the second
# entry is in AMD's manual for LAR, in both for LSLRun on AMD Zen 5 (EPYC 9645): 35 cases.
Operands
| Operand | Kind | Action |
|---|---|---|
LAR r16/32/64, m16 | ||
r16/32/64 | explicit | conditional write |
m16 | explicit | read |
RFLAGS | implicit | write |
LAR r16/32/64, r16/32/64 | ||
r16/32/64 | explicit | conditional write |
r16/32/64 | explicit | read |
RFLAGS | implicit | write |
Flags
| ZF |
|---|
| All forms |
| M |
Attributes
What else XED records about the forms. How to read.
- All forms
- not in real-address mode
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.
| ISA set | CPUID | Processors |
|---|---|---|
I286PROTECTED | 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
- Intel XED v2026.08.23 (commit
0bcb6237345c): forms, encodings, operands, flags, exception classes, attributes, ISA sets, CPUID bits and chip model. - The CPU data of x86-64.net: Zen 3 to Zen 6, from GCC’s
-marchfeature sets and AMD’s Processor Programming References, which the page of each processor cites. - Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 2 (325383-093, September 2026): Volume 2A, page 3-533 (LAR)
- Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 3 (325384-093, September 2026)
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.