Intel x86_64 CPU搭載。Windows で「unaligned memory access fault」をキャッチしようとしています。これは Linux (Ubuntu) で完全に機能します。
たとえば、次のように EFLAGS レジスタの AC フラグをオンにできます。
pushfd
or DWORD PTR[esp], 0x40000
popfd
次に、位置合わせされていないメモリ アクセス (0x804a003 での DWORD 読み取り/書き込みなど) により、Linux プロセスで SIGBUS エラーが発生します。
ただし、同じ CPU を使用して、Windows (7 および 8) で同じことを行っても、何も起こりません。誰かが私に理由を説明できますか?? これは、Windows が CR0.AM フラグを無効にし、Linux が無効にしないためですか?
アドバイスをいただければ幸いです。ありがとうございました。