1

使用英特尔 x86_64 CPU。我试图在 Windows 上捕获“未对齐的内存访问错误”。这在 Linux (Ubuntu) 上完美运行。

例如,我可以像这样打开 EFLAGS 寄存器上的 AC 标志

    pushfd
    or DWORD PTR[esp], 0x40000
    popfd

然后,未对齐的内存访问(例如,0x804a003 上的 DWORD 读/写)会引发 Linux 进程的 SIGBUS 错误。

但是,使用相同的 CPU,如果我在 Windows(7 和 8)上做同样的事情,什么也不会发生。有人可以解释我为什么吗?这是因为 Windows 禁用了 CR0.AM 标志而 Linux 没有吗?

我会很感激一些建议。谢谢你。

4

0 回答 0