RDSSPD, RDSSPQ
读取阴影 栈指针
stableVMJITAOTinstruction
编码
| 操作码 | 指令 | Op/En | 64 位 | 兼容/传统 | 说明 |
|---|---|---|---|---|---|
F3 0F 1E /1 (mod=11) | RDSSPD r32 | R | 有效 | 有效 | 复制低32位的阴影栈指针(SSP)到r32. |
F3 REX.W 0F 1E /1 (mod=11) | RDSSPQ r64 | R | 有效 | 不可编码 | 复制阴影 栈指针(SSP)至r64. |
操作数编码
每个模式对应上表 Op/En 列的一个取值,说明各操作数按书写顺序分别编码在指令的哪个字段,以及指令对它是读、是写还是两者兼有。
R
modrm.rmescrituraModRM 字节的 r/m 字段(第 2-0 位);当 mod 字段要求时,还包括 SIB 字节和位移
实测开销
正在从 arch-data 加载实测数据...
说明
复制当前阴影 栈指针 (SSP) 注册到注册目的地 。 此 操作码 是 NOP 当 CET 阴影堆栈无法启用时, 以及在不支持 CET 的处理器上.
行动
IF CPL = 3
IF CR4.CET & IA32_U_CET.SH_STK_EN
IF (operand size is 64 bit)
THEN
Dest := SSP;
ELSE
Dest := SSP[31:0];
FI;
FI;
ELSE
IF CR4.CET & IA32_S_CET.SH_STK_EN
IF (operand size is 64 bit)
THEN
Dest := SSP;
ELSE
Dest := SSP[31:0];
FI;
FI;
FI;受影响的旗帜
None.
C/C++ 编译器等效
RDSSPD__int32 _rdsspd_i32(void); RDSSPQ__int64 _rdsspq_i64(void);
异常
实地址模式
#UD | 如果使用 LOCK 前缀 。 |
保护模式
#UD | 如果使用 LOCK 前缀 。 |
虚拟 8086 模式
#UD | 如果使用 LOCK 前缀 。 |
兼容模式
#UD | 如果使用 LOCK 前缀 。 |
64 位模式
#UD | 如果使用 LOCK 前缀 。 |