WRFSBASE, WRGSBASE

写FS/GS分部基地

stableVMJITAOTinstruction

编码

操作码指令Op/En64 位兼容/传统说明
F3 0F AE /2WRFSBASE r32M有效无效用源寄存器中的32位值加载FS基址.
F3 REX.W 0F AE /2WRFSBASE r64M有效无效用源寄存器中的64位值加载FS基址.
F3 0F AE /3WRGSBASE r32M有效无效用源寄存器中的32位值加载GS基址.
F3 REX.W 0F AE /3WRGSBASE r64M有效无效用源寄存器中的64位值加载GS基址.

操作数编码

每个模式对应上表 Op/En 列的一个取值,说明各操作数按书写顺序分别编码在指令的哪个字段,以及指令对它是读、是写还是两者兼有。

M

  1. modrm.rm lecturaModRM 字节的 r/m 字段(第 2-0 位);当 mod 字段要求时,还包括 SIB 字节和位移

实测开销

正在从 arch-data 加载实测数据...

说明

用 ModR/M:r/m字段表示的通用寄存器装入FS或GS段基址.

源操作数可以是32位或64位的通用寄存器. REX.W前缀表示操作数大小为64位. 如果不使用REX.W前缀,则操作数大小为32位;忽略了源寄存器的上32位,清除了基址的上32位(用于FS或GS). 此指令仅以64位模式支持.

行动

FS/GS segment base address := SRC;

受影响的旗帜

None.

C/C++ 编译器等效

WRFSBASE 无效 writefsbase u32(未签名 int ) ; WRFSBASE writefsbase u64(未署名 int64) ; 2. WRGSBASE 无效 writegsbase u32(未签名 int ) ; WRGSBASE writegsbase u64(未署名 int64) ; 2.

异常

保护模式
#UDWRFSBASE和WRGSBASE指令在保护模式中不被识别.
实地址模式
#UDWRFSBASE和WRGSBASE指令在实地址模式中不被识别.
虚拟 8086 模式
#UDWRFSBASE和WRGSBASE指令在虚拟 8086 模式中不被识别.
兼容模式
#UDWRFSBASE和WRGSBASE指令在兼容模式中不被识别.
64 位模式
#UD如果使用 LOCK 前缀。如果 CR4.FSGSBASE[bit 16] = 0。如果 CPUID.07H.00H: EBX.FSGSBASE[0] = 0
#GP(0)如果源寄存器包含一个非名称地址.

来源