错误ANOMALY: meaningless REX prefix used
是什么意思?我已经用谷歌搜索,并且我得到的所有信息都是完全随机的,因为它与java或avg或minecraft有关(由于Java)。
但是,合并c++ opengl 4.0图形引擎的多个分支后,我的Visual Studio控制台应用程序的控制台输出中出现了此错误,并且突然弹出了该错误。我可能已经在编写它们的时间点之间更新了AMD图形驱动程序,因此这可能是一个来源。错误弹出后,深度缓冲区测试也突然被禁用。
在Visual Studio中使用clean and rebuild之后,错误现在消失了,因此,我不需要修复错误的帮助,但是我想知道它的含义以及通常导致此错误的原因。这让我感到好奇,因为我没有发现任何有用的搜索此错误的信息。
最佳答案
Myria在评论中说:
为了对此进行扩展,在一些不同的情况下,将忽略REX前缀。
看起来这条异常消息显示在从git到Java相关程序(可能是您正在引用的程序)的各种上下文中,其中新驱动程序似乎是问题所在。罪魁祸首:Raptr,它带有AMD的Radeon驱动程序。在Java帖子中,有人报告使用SAPPHIRE Radeon HD 5850,在与我链接的下一个站点上,一个人使用AMD R9 390,另一个人使用380。在这种情况下,有人在64-bit Win7 sys控制台上看到了该消息。现在,此人的站点带我通过Raptr所使用的钩子(Hook)(该钩子(Hook)连接到opengl32.dll),该钩子(Hook)称为mhook,我开始研究这个“Windows API钩子(Hook)库”,并找到了这个starting on line 1230:
assert(X86Instruction->AddressSize >= 4);
if (X86Instruction->rex.w)
{
X86Instruction->OperandSize = 8;
X86Instruction->HasOperandSizePrefix = FALSE;
}
else if (X86Instruction->HasOperandSizePrefix)
{
assert(X86Instruction->OperandSize == 2);
}
else if (X86Instruction->rex_b == REX_PREFIX_START)
{
if (!Instruction->AnomalyOccurred)
{
if (!SuppressErrors) printf("[0x%08I64X] ANOMALY: meaningless REX prefix used\n", VIRTUAL_ADDRESS);
Instruction->AnomalyOccurred = TRUE;
}
X86Instruction->rex_b = 0;
}
总而言之,当软件像Windows API库那样处理REX前缀忽略时,就会出现此ANOMALY消息。
因此,您到了那里,就在所有正确的地方。 mhook库甚至还有一长串要忽略的Visual Studio文件。
附加说明*
我发现os2museum网站上的评论很好地说明了整个谜团
在这个特定的钩子(Hook)库中,其他有趣的错误消息(只是其中的一些!)包括
ANOMALY: Meaningless segment override
ANOMALY: REX prefix before legacy prefix 0x%02X\n
ANOMALY: Conflicting prefix\n
ANOMALY: Reached maximum prefix count %d\n
和我的最爱:
ANOMALY: branch into the middle of an instruction\n
只是因为我无法自救,所以可能值得注意这些是默认为64位操作数的指令:
+ -------------- + ------------ + ------------- +
|致电(附近)| ENTER | Jcc |
+ -------------- + ------------ + ------------- +
| JrCXZ | JMP(附近)|离开
+ -------------- + ------------ + ------------- +
| LGDT | LIDT | LLDT |
+ -------------- + ------------ + ------------- +
|圈| LOOPcc | LTR |
+ -------------- + ------------ + ------------- +
| MOV CR(n)| MOV DR(n)| POP注册/内存|
+ -------------- + ------------ + ------------- +
| POP reg | POP FS | POP GS |
+ -------------- + ------------ + ------------- +
| POPFQ |推imm8 |推imm32 |
+ -------------- + ------------ + ------------- +
|推注册/内存| PUSH reg |推式FS |
+ -------------- + ------------ + ------------- +
|推GS | PUSHFQ | RET(附近)|
+ -------------- + ------------ + ------------- +