background image

RDFSBASE/RDGSBASE—Read FS/GS Segment Base

INSTRUCTION SET REFERENCE, M-U

4-530 Vol. 2B

RDFSBASE/RDGSBASE—Read FS/GS Segment Base

Instruction Operand Encoding

Description

Loads the general-purpose register indicated by the modR/M:r/m field with the FS or GS segment base address.
The destination operand may be either a 32-bit or a 64-bit general-purpose register. The REX.W prefix indicates the 
operand size is 64 bits. If no REX.W prefix is used, the operand size is 32 bits; the upper 32 bits of the source base 
address (for FS or GS) are ignored and upper 32 bits of the destination register are cleared. 
This instruction is supported only in 64-bit mode.

Operation

DEST ← FS/GS segment base address;

Flags Affected

None

C/C++ Compiler Intrinsic Equivalent

RDFSBASE:

unsigned int _readfsbase_u32(void );

RDFSBASE: 

unsigned __int64 _readfsbase_u64(void );

RDGSBASE: 

unsigned int _readgsbase_u32(void );

RDGSBASE:

unsigned __int64 _readgsbase_u64(void );

Protected Mode Exceptions

#UD 

The RDFSBASE and RDGSBASE instructions are not recognized in protected mode.

Real-Address Mode Exceptions

#UD

The RDFSBASE and RDGSBASE instructions are not recognized in real-address mode.

Virtual-8086 Mode Exceptions

#UD

The RDFSBASE and RDGSBASE instructions are not recognized in virtual-8086 mode.

Opcode/

Instruction

Op/ 

En

64/32-

bit 

Mode

CPUID Fea-

ture Flag

Description

F3 0F AE /0

RDFSBASE r32

M

V/I

FSGSBASE

Load the 32-bit destination register with the FS 

base address.

F3 REX.W 0F AE /0

RDFSBASE r64

M

V/I

FSGSBASE

Load the 64-bit destination register with the FS 

base address.

F3 0F AE /1

RDGSBASE r32

M

V/I

FSGSBASE

Load the 32-bit destination register with the GS 

base address.

F3 REX.W 0F AE /1

RDGSBASE r64

M

V/I

FSGSBASE

Load the 64-bit destination register with the GS 

base address.

Op/En

Operand 1

Operand 2

Operand 3

Operand 4

M

ModRM:r/m (w)

NA

NA

NA