【发布时间】:2019-05-13 21:40:46
【问题描述】:
在某个时候,英特尔将开始出货支持 CET(Control-flow Enforcement Technology)的 CPU,这增加了两个指令ENDBR64 和ENDBR32。
这两个将被编码为
F3 0F 1E FA for ENDBR64 and
F3 0F 1E FB for ENDBR32 respectively.
这些将如何在较旧的 x86 CPU 上执行?
例如,Core i5 甚至是老式的 Pentium II?
更新:
F3 0F = prefix indicating newer instructions
1E = ENDBR
FA = ENDBR64
【问题讨论】:
-
指令集参考将它们列为“保留 - NOP”。但是我不清楚 cpu 是否也知道获取最后一个字节。
-
@Jester 他们被记录为有一个 modr/m 字节,所以应该没问题。
-
我不清楚是不是这样。
0F 1F被列为NOP /0 Ev,所以它确实有 modrm。但是0F 1E只是NOP。 -
如果我有一个旧的 Pentium CPU,我会尝试这些,但我没有。这里有人碰巧有吗?
-
您对问题的更新不是最佳的。英特尔手册第 3.1.1.2 节指出,字节序列 F3.0F 可以有多种含义。
标签: assembly x86 x86-64 control-flow