32ビットWindows環境のx86-64 CPUで64ビット命令を実行できますか?


3

私は64ビットIntel Atom上で32ビットWindows 7を実行していますが、OSがCPUを64ビット命令の実行を許可するモードにするのか、それともすべてを引き起こす32ビット互換モードにするのか疑問に思います。違法としてトラップされる64ビット命令

そうでない場合は、OSまたはCPUによってブロックされていませんか?そして、IntelとAMDのCPUはこの点で異なりますか?

回答:


3

32ビットOSを実行している場合、CPUは32ビットモードであり、その他のハードウェア機能にアクセスすることはできません。 CPUがこの状態のとき、64ビットコードは実行されません。これはOSの制限ではなく、ハードウェアがどのように機能するのかの影響です。

この点で、AMDとIntelのCPUに違いはないはずです。


うーん私はStackoverflowでこれに遭遇した、それはMac OS Xが同じハードウェアでそれをすることができることを示唆しているように思われる: stackoverflow.com/questions/49934/…
hippietrail

これは非常に興味深いです、私は前にそれに出会ったことがありませんでした。私はモノリシックカーネルに慣れていると思います。 Windowsはそのようには動作しないことは間違いありませんが、理論的には可能であると思われます(どうやってカーネルが64ビットの物理アドレスを32ビットの仮想アドレスに変換する必要がないのでしょうか?)ロングモードでのセグメントレジスタ...私のOSコースの私の記憶は消えていきますが)。
user55325

絶対アドレスの上位32ビットでゼロ以外の状態を無視またはトラップするだけの可能性がありますか。
hippietrail

1

Windows 7は64ビットをOSの独立したシステムとして使用し、32ビットアプリは32ビットモードで動作し、64ビットアプリは64ビットで動作します。

それは主にOSによって決定されますが、とにかくCPUが64ビットでない場合それは動作しません。

だから私はOSが32ビットで実行されている64ビットアプリを停止すると言うでしょう。 Intel& A AMDのCPUでも同じように動作します。2つを使用しても違いはありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.