はじめに
Visual Studioでアセンブリコードを出力する方法です。
- Windows10
- Visual Studio 2015 Update3
Visual Studioでアセンブリコードを出力する方法
ソリューションのプロパティから「C/C++」→「出力ファイル」→「アセンブリの出力」で「アセンブリコードのみ(/FA)」を選択します。
ビルド後、Debug/Releaseのフォルダにソリューション名.asm(Assembler Source)が出力されます。
ちなみに、「アセンブリコードとソースコード(/FAs)」を選ぶと、アセンブリコード内にC/C++のソースプログラムが埋め込まれて、ソースプログラムに対応するアセンブリコードがわかりやすく出力されます。
例:
; 11 : { push ebp mov ebp, esp sub esp, 12 ; 0000000cH mov eax, DWORD PTR ___security_cookie xor eax, ebp mov DWORD PTR __$ArrayPad$[ebp], eax ; 12 : char temp[5] = { 0 }; ; 13 : strcpy(temp, "xxxxx"); mov eax, DWORD PTR ??_C@_05HDGBDIJL@xxxxx?$AA@ mov DWORD PTR _temp$[ebp], eax mov ax, WORD PTR ??_C@_05HDGBDIJL@xxxxx?$AA@+4 mov WORD PTR _temp$[ebp+4], ax ; 14 : ; 15 : printf("%s\n", temp); lea eax, DWORD PTR _temp$[ebp] push eax push OFFSET ??_C@_03OFAPEBGM@?$CFs?6?$AA@ call _printf ; 16 : system("pause"); push OFFSET ??_C@_05PDJBBECF@pause?$AA@ call DWORD PTR __imp__system ; 17 : ; 18 : return 0; ; 19 : } mov ecx, DWORD PTR __$ArrayPad$[ebp] add esp, 12 ; 0000000cH xor ecx, ebp xor eax, eax call @__security_check_cookie@4 mov esp, ebp pop ebp ret 0 _main ENDP _TEXT ENDS