SSブログ

X64 で動作している Visual Studio に 64bit版コンパイラを使わせる方法 [プログラミング]

Visual Studio IDE(2005/2008共に)は32bitアプリケーションです。x64(例えばVista64)なOS上でも32bitプロセスです。

以下は2008の話です。2005は知りません。

C/C++コンパイラはx64用が用意されています。正しく言うと、「x64で動き、x64コードを吐くコンパイラ(★1)」です。

(フォルダのキャプチャ画像なんかを貼る)

x64 OSで、x64プロジェクトをビルドすれば、このx64なコンパイラを使うと思っていたのですが・・・

http://msdn.microsoft.com/ja-jp/library/ms246588.aspx
Visual Studio では、Windows 64 ビット コンピュータ上であっても 32 ビット クロスコンパイラを使用します。ただし、devenv コマンドを使用すると、64 ビットでホストされたツールを呼び出すコマンドライン環境を作成できます。

オーマイガー。「x86で動き、x64コードを吐くコンパイラ(★2)」を使っているようです。クロスコンパイラという奴ですね。

ちょっと悔しいので、(★1)を使わせたいと思いました!!!

結論からいうと可能で、こうすればいいようです。

(後で書く)

タスクマネージャで見ると、cl.exeやlink.exeが64bitプロセスになっていることが分かります。

(キャプチャを貼る)

でもよく考えると、★1も★2も最適化のアルゴリズムは同じだろうから、結果生成されるコードに違いはないはずで・・・

コンパイル時間や使用メモリ量に差があるかな?良くなるなら意味あるんですけどね。あとは大きなファイルをコンパイルできるとか。でも32bit版でコンパイルできないなんてどんだけ。

というか、そうでないなら、★1が用意されている理由が分からない。ひょっとしてクロスチェック用?

ただ、同じことをやるなら、32bit版のほうが高速に動くと思うんですよ。要検証 なんでかっていうと、ポインタサイズとsize_tが半分で済むので、その分メモリ消費量が少なくて済む(=キャッシュミス率が下がる)から。要検証 もしこれが真なら、ほとんどのアプリは32bit版で提供すべきですね!!!


nice!(0)  コメント(1) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 1

valp

「ポインタサイズとsize_tが半分で済む」のくだり、一般的にはそのとおりなのですが、x86→x86-64の場合、CPUレジスタの数が倍増しているので、高速化するアプリも少なくないという話も聞きます。
by valp (2011-04-29 22:41) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。