最適化がオフになっているデバッグモードでターゲットとしてx64プレートフォームを使用するMSVS2012ではlong long
、1つの命令で初期化を実行できないことに驚いています。
; long long l1 = 1;
mov DWORD PTR _l1$[ebp], 1
mov DWORD PTR _l1$[ebp+4], 0
レジスターは8バイトなので、それができる命令を期待していました…1つありますか?
x64を対象とするクイックコンソールモードプロジェクトでこれを試して、逆アセンブリウィンドウを確認します。
long long l1 = 1;
000000013F151035 mov qword ptr [rsp],1
x86をターゲットにする場合の同じコード:
long long l1 = 1;
010213EE mov dword ptr [l1],1
010213F5 mov dword ptr [ebp-8],0
スラムダンク、あなたは実際にあなたのプログラムのx64ビルドを見ていません。これを修正するには、Build +ConfigurationManagerを使用します。