4

最適化がオフになっているデバッグモードでターゲットとしてx64プレートフォームを使用するMSVS2012ではlong long、1つの命令で初期化を実行できないことに驚いています。

; long long l1 = 1;

    mov DWORD PTR _l1$[ebp], 1
    mov DWORD PTR _l1$[ebp+4], 0

レジスターは8バイトなので、それができる命令を期待していました…1つありますか?

4

1 に答える 1

2

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を使用します。

于 2012-11-20T17:55:04.157 に答える