원본 : http://www.debuglab.com/knowledge/assemble.html
1. 요약
Release 모드에서 어셈블된 코드를 보시려면 컴파일러 옵션에서 /FAcs 를 추가하시면 됩니다.
2. 본문
다음의 예제에서 컴파일러 옵션 /FAcs를 추가한 후 생성되는 .cod 파일에는 아래와 같은 어셈블러 코드가 들어있습니다.
3. 예제
(1) 원본 코드
(2) 어셈블된 코드
- 2001.08.06 Smile Seo -
1. 요약
Release 모드에서 어셈블된 코드를 보시려면 컴파일러 옵션에서 /FAcs 를 추가하시면 됩니다.
2. 본문
다음의 예제에서 컴파일러 옵션 /FAcs를 추가한 후 생성되는 .cod 파일에는 아래와 같은 어셈블러 코드가 들어있습니다.
3. 예제
(1) 원본 코드
// assem.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
int main(int argc, char* argv[])
{
printf("Hello World!\n");
return 0;
}
(2) 어셈블된 코드
TITLE F:\Test\assem\assem.cpp
.386P
include listing.inc
if @Version gt 510
.model FLAT
else
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT ENDS
_DATA SEGMENT DWORD USE32 PUBLIC 'DATA'
_DATA ENDS
CONST SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST ENDS
_BSS SEGMENT DWORD USE32 PUBLIC 'BSS'
_BSS ENDS
_TLS SEGMENT DWORD USE32 PUBLIC 'TLS'
_TLS ENDS
; COMDAT ??_C@_0O@FEEI@Hello?5World?$CB?6?$AA@
_DATA SEGMENT DWORD USE32 PUBLIC 'DATA'
_DATA ENDS
; COMDAT _main
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT ENDS
FLAT GROUP _DATA, CONST, _BSS
ASSUME CS: FLAT, DS: FLAT, SS: FLAT
endif
PUBLIC _main
PUBLIC ??_C@_0O@FEEI@Hello?5World?$CB?6?$AA@ ; `string'
EXTRN _printf:NEAR
; COMDAT ??_C@_0O@FEEI@Hello?5World?$CB?6?$AA@
; File F:\Test\assem\assem.cpp
_DATA SEGMENT
??_C@_0O@FEEI@Hello?5World?$CB?6?$AA@ DB 'Hello World!', 0aH, 00H ; `string'
_DATA ENDS
; COMDAT _main
_TEXT SEGMENT
_main PROC NEAR ; COMDAT
; 8 : printf("Hello World!\n");
00000 68 00 00 00 00 push OFFSET FLAT:??_C@_0O@FEEI@Hello?5World?$CB?6?$AA@ ; `string'
00005 e8 00 00 00 00 call _printf
0000a 83 c4 04 add esp, 4
; 9 : return 0;
0000d 33 c0 xor eax, eax
; 10 : }
0000f c3 ret 0
_main ENDP
_TEXT ENDS
END
- 2001.08.06 Smile Seo -
"Win32 API" 카테고리의 다른 글
- SearchPath()의 리턴값 알아보기 (0)2007/02/22
- 파일의 특정 부분의 warning level을 지정하기 (0)2007/02/21
- 어셈블된 코드 보기 (0)2007/02/21
- Volatile (0)2007/02/21
- 특정 확장자명으로 프로그램 실행시키기 (0)2007/02/21
Tags Assembly

수안이의 컴퓨터 연구실



Leave your greetings.