http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=1406 [º¹»ç]
#include<stdio.h>
int main(int argc,char **argv)
{
int i=10;
printf("%d\n",i);
int j=20;
printf("%d\n",j);
printf("%d\n",i+5);
printf("%x\n",&i);
puts("test");
puts(i);
scanf("%d",&i);
printf("%d\n",i);
return 1;
}
FreeBSD 8.0-RELEASE #0 (gcc 4.2.1)
0x08048470 <main+0>: lea ecx,[esp+4]
0x08048474 <main+4>: and esp,0xfffffff0
0x08048477 <main+7>: push DWORD PTR [ecx-4]
0x0804847a <main+10>: push ebp
0x0804847b <main+11>: mov ebp,esp
0x0804847d <main+13>: push ecx
----------------ÇÁ·Ñ·Î±×-------------------
0x0804847e <main+14>: sub esp,0x24
//¿Ö esp¿¡¼ 24 ºüÁö´ÂÁö ¸ð¸£°ÚÀ½. ¾Æ¸¶ ½ºÅÃÀÌ »ç¿ëµÉ¶§ »ç¿ëµÉ¸¸Å Âß ºüÁ³´Ù°¡ +·Î ¿Ã¶ó°¡´Â ¹æ½ÄÀ» »ç¿ëÇϴµí..
0x08048481 <main+17>: mov DWORD PTR [ebp-12],0xa
//ebp-12 = i = 10;
0x08048488 <main+24>: mov eax,DWORD PTR [ebp-12]
//i°ªÀ» eax¿¡ ³ÖÀ½.
0x0804848b <main+27>: mov DWORD PTR [esp+4],eax
//printfÀÇ µÎ¹ø° ÀÎÀÚ. printf(" ",À̺κÐ). eax¸¦ esp+4¿¡ ³Ö´Â´Ù.
0x0804848f <main+31>: mov DWORD PTR [esp],0x80485c1
//printfÀÇ Ã¹¹ø° ÀÎÀÚ. printf("À̺κÐ", );
0x08048496 <main+38>: call 0x8048324 <_init+68>
//printf()¼öÇà. esp¿Í esp+4¸¦ ÀÌ¿ëÇÏ¿© Ãâ·Â.
0x0804849b <main+43>: mov DWORD PTR [ebp-8],0x14
//ebp-12 = i ebp-8 = j = 20;
0x080484a2 <main+50>: mov eax,DWORD PTR [ebp-8]
0x080484a5 <main+53>: mov DWORD PTR [esp+4],eax
0x080484a9 <main+57>: mov DWORD PTR [esp],0x80485c1
0x080484b0 <main+64>: call 0x8048324 <_init+68>
//printf(0x80485c1,j);
0x080484b5 <main+69>: mov eax,DWORD PTR [ebp-12]
//i°ªÀ» eax¿¡ ³ÖÀ½. ¿©±â¼± 10
0x080484b8 <main+72>: add eax,0x5
//eax = eax+5 = i+5 =15
0x080484bb <main+75>: mov DWORD PTR [esp+4],eax
0x080484bf <main+79>: mov DWORD PTR [esp],0x80485c1
0x080484c6 <main+86>: call 0x8048324 <_init+68>
//printf("%d\n",i+5);
0x080484cb <main+91>: lea eax,[ebp-12]
//eax ¿¡ ebp-12ÀÇ ÁÖ¼Ò°ªÀ» ³ÖÀ½. eax = &(ebp-12) = &i
0x080484ce <main+94>: mov DWORD PTR [esp+4],eax
0x080484d2 <main+98>: mov DWORD PTR [esp],0x80485c5
0x080484d9 <main+105>: call 0x8048324 <_init+68>
//printf("%x\n",&i);
0x080484de <main+110>: mov DWORD PTR [esp],0x80485c9
//esp´Â init+36ÀÇ ÀÎÀÚ.
0x080484e5 <main+117>: call 0x8048304 <_init+36>
//putsÀÓ
0x080484ea <main+122>: mov eax,DWORD PTR [ebp-12]
//eax¿¡ i°ª ´ëÀÔ.
0x080484ed <main+125>: mov DWORD PTR [esp],eax
//i¸¦ esp¿¡ ³ÖÀ½.
0x080484f0 <main+128>: call 0x8048304 <_init+36>
//puts(esp) = puts(i)
0x080484f5 <main+133>: lea eax,[ebp-12]
//iÀÇ ÁÖ¼Ò°ª eax¿¡³ÖÀ½.
0x080484f8 <main+136>: mov DWORD PTR [esp+4],eax
//eax+4, ¾Æ¸¶µµ ÀÌÈÄ callµÇ´Â ÇÔ¼öÀÇ µÎ¹ø° ÀÎÀÚ.¿¡ iÀÇ ÁÖ¼Ò°ª µé¾î°¨.
0x080484fc <main+140>: mov DWORD PTR [esp],0x80485ce
//init+84()ÀÇ Ã¹¹ø° ÀÎÀÚ.
0x08048503 <main+147>: call 0x8048334 <_init+84>
//scanf("%d",&i);
0x08048508 <main+152>: mov eax,DWORD PTR [ebp-12]
//iÀÇ °ªÀ» eax¿¡ ³ÖÀ½. i´Â scanf·Î ÀÎÇØ ¼öÁ¤µÈ °ªÀÌ µé¾î°¨.
0x0804850b <main+155>: mov DWORD PTR [esp+4],eax
//i°¡ printf(),init+68 ÀÇ µÎ¹ø°ÀÎÀÚ·Î ¼¼ÆÃ.
0x0804850f <main+159>: mov DWORD PTR [esp],0x80485c1
0x08048516 <main+166>: call 0x8048324 <_init+68>
//i°ª Ãâ·Â.
0x0804851b <main+171>: mov eax,0x1
//¸®ÅÏ°ª.
0x08048520 <main+176>: add esp,0x24
//ºüÁ³´ø esp ´Ù½Ã º¹¿ø.
----------------¿¡Çʷα×-------------------
0x08048523 <main+179>: pop ecx
0x08048524 <main+180>: pop ebp
0x08048525 <main+181>: lea esp,[ecx-4]
0x08048528 <main+184>: ret |
Hit : 6762 Date : 2010/02/24 08:08
|