有时,当在 Visual Studio 调试器中闯入程序时,我会看到以下奇怪的现象:
调试器似乎将下一个指令字节显示为在指令的 REX 前缀之后开始。
这不仅令人困惑,而且它也明显抛弃了调试器本身,因为它发现自己无法显示前面指令的反汇编结果。
然而,令人困惑的是,当继续执行时,程序似乎运行良好。
为什么会出现这种情况?调试器只是错误地“显示”下一条指令,还是实际上以某种方式从该字节开始执行?
在您的图片中,您可以看到 80x86 CPU 上的机器代码长度是
因此,任何调试器都无法理解之前机器代码的起始指针。
因此,任何调试器都无法找到正确的指针来解码之前的机器代码。
所以,只要打个问号就可以解决这个问题!