1

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 が無効にしないためですか?

アドバイスをいただければ幸いです。ありがとうございました。

4

0 に答える 0