RDPKRU

为用户页面读取保护 密钥 权利

stableVMJITAOTinstruction

编码

操作码指令Op/En64 位兼容/传统说明
NP 0F 01 EERDPKRUZO有效有效将PKRU读入EAX.

实测开销

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

说明

将PKRU的值读入EAX,并清除EDX. ECX在RDPKRU执行时必须是0;否则,会出现一般保护例外(#GP).

RDPKRU只有在CR4.PKE=1的情况下才能执行;否则,会出现无效的-操作码例外(#UD). 软件可以通过检查CPUID.07H.00H:ECX.OSPKE[4]来发现CR4.PKE的值.

在支持Intel 64 Architecture的处理器上,RCX的高阶32位被忽略,RDX和RAX的高阶32位被清除.

行动

IF (ECX = 0)
    THEN
          EAX := PKRU;
          EDX := 0;
    ELSE #GP(0);

FI;

受影响的旗帜

None.

C/C++ 汇编器内置等效的 RDPKRU uint32 t rdpkru u32(void);

异常

保护模式
#GP(0)如果ECX 0的话.
#UD如果使用 LOCK 前缀。如果 CR4.PKE = 0.
实地址模式
与保护模式中的例外相同.
虚拟 8086 模式
与保护模式中的例外相同.
兼容模式
与保护模式中的例外相同.
64 位模式
与保护模式中的例外相同.

来源