せろひきの練習NEO

パソコン&スマートデバイス&サーバーテクノロジー

64bit Windows プログラミング

日経Windowsプロの1月号の第一特集は「x64で本格化する64ビットWindowsの時代」、主にプログラマやITプロフェッショナル向けのWindows XP 64bit Editionのプログラミングモデルやサブシステムの話が載っていました。

日経Windowsプロ2005年1月号 日経Windowsプロ2005年1月号

x64/AMD64/EM64T対応の64bit Windows (XPおよび2003 Server)ではこれまでのx86-Win32プログラムもそのまま動作します。実際にはIA64(Itanium)向けの64bit Windowsでもx86-Win32プログラムを動かすための仕組みが導入されており、これをプロセッサの仕組みを使って効率化したものとなっているようです。(両者ともある意味エミュレーションしているということのようです。)

32bit拡張の時は、マシンコード的には何もPrefixをつけないと32bitデータ/32bitアドレスでしたが、Windowsで採用されている64bit拡張モードではPrefixのない時には32bitデータ/64bitアドレスとなるそうです。つまり、64bitデータレジスタや32bitアドレスを使用するときにはPrefixが付くんですね。で、x64/AMD64/EM64TでWin32プログラムを実行(エミュレーション)するときには32bitアドレスPrefixを付けているみたいです。ここらへん、ほとんどVirtual PC for Windowsの世界ですね。

これまでのNT系32bit Windowsには16bit Windowsプログラムを動かすためのWOW16モジュールが存在しました。これに対して64bit Windowsで32bit Windowsプログラムを動かすためのシステムはWOW64と呼ぶそうです。