まあググれば出てくると思うけど
vcでアセンブリコードを出力してみる方法。
どんなコードが出てくるのかなーという参考程度に。

1. visual studioで設定する。


2. または「visual studio 200x コマンドプロンプト」からやる。
(pathとかを自動的に通してくれる。)


で、ファイルの置いてあるディレクトリに移動してコンパイルする。
たとえばファイルが「d:\user_data\Documents\C\local_vs_global.c」だったら

>d:
>cd D:\user_data\Documents\C
>cl /FAs /Ox local_vs_global.c

でokなはず。
/Oxは最大限の最適化なので、いろいろへんてこな最適化をしてくれて楽しい。

たとえば
int g_val;
void func1()
{
	int a=g_val;
	++a;
	g_val=a+2;
}
void func2()
{
	int a=g_val, b=g_val<<1;
	++a;
	g_val=a-b;
}
int main()
{
	func1();
	func2();
	return 0;
}
これぐらいの小さいコードなら、g_valがグローバルなのにもかかわらず、ちゃっかりレジスタに乗ったりする。
最終更新:2009年06月12日 16:21
添付ファイル