WRFSBASE, WRGSBASE
写FS/GS分部基地
stableVMJITAOTinstruction
编码
| 操作码 | 指令 | Op/En | 64 位 | 兼容/传统 | 说明 |
|---|---|---|---|---|---|
F3 0F AE /2 | WRFSBASE r32 | M | 有效 | 无效 | 用源寄存器中的32位值加载FS基址. |
F3 REX.W 0F AE /2 | WRFSBASE r64 | M | 有效 | 无效 | 用源寄存器中的64位值加载FS基址. |
F3 0F AE /3 | WRGSBASE r32 | M | 有效 | 无效 | 用源寄存器中的32位值加载GS基址. |
F3 REX.W 0F AE /3 | WRGSBASE r64 | M | 有效 | 无效 | 用源寄存器中的64位值加载GS基址. |
操作数编码
每个模式对应上表 Op/En 列的一个取值,说明各操作数按书写顺序分别编码在指令的哪个字段,以及指令对它是读、是写还是两者兼有。
M
modrm.rmlecturaModRM 字节的 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.
异常
保护模式
#UD | WRFSBASE和WRGSBASE指令在保护模式中不被识别. |
实地址模式
#UD | WRFSBASE和WRGSBASE指令在实地址模式中不被识别. |
虚拟 8086 模式
#UD | WRFSBASE和WRGSBASE指令在虚拟 8086 模式中不被识别. |
兼容模式
#UD | WRFSBASE和WRGSBASE指令在兼容模式中不被识别. |
64 位模式
#UD | 如果使用 LOCK 前缀。如果 CR4.FSGSBASE[bit 16] = 0。如果 CPUID.07H.00H: EBX.FSGSBASE[0] = 0 |
#GP(0) | 如果源寄存器包含一个非名称地址. |