01. 컴파일의 의미

Language/C 2011. 9. 8. 12:13

<컴퓨터 구조> 시간 떄 배운 개념이 나옴. 따로 설명안함

어셈블리어(instrution set) 와 기계어 개념. 모르면 공부하거나 패스하길.


[like.c 소스]

 #include <stdio.h>


int main()

{


        printf("I like you!\n");

        return 0;

}




다음 명령으로 컴파일 하면 like실행 파일을 얻을 수 있다.

[oneone@study study]$ gcc -g -o like like.c


다음으로 -g 옵션으로 컴파일한 like 실행 파일에 대해 objdump 명령을 다음과 같이 실행한다.
[oneone@study study]$ objdump -S like

생략 .....

080483b4 <main>:

#include <stdio.h>


int main()

{

 80483b4:       55                      push   %ebp

 80483b5:       89 e5                   mov    %esp,%ebp

 80483b7:       83 e4 f0                and    $0xfffffff0,%esp

 80483ba:       83 ec 10                sub    $0x10,%esp


        printf("I like you!\n");

 80483bd:       c7 04 24 94 84 04 08    movl   $0x8048494,(%esp)

 80483c4:       e8 27 ff ff ff          call   80482f0 <puts@plt>

        return 0;

 80483c9:       b8 00 00 00 00          mov    $0x0,%eax

}

 80483ce:       c9                      leave

 80483cf:       c3                      ret


080483d0 <__libc_csu_fini>:

 생략 ...

 80483b4:       55                      push   %ebp

 메모리주소    기계어                어셈블리어


xxd 명령으로 16진수로 출력하면 실제로 기계어가 들어있음을 알 수 있다.

[oneone@study study]$ xxd like

0000a20: 0000 0000 0000 0000 0000 0000 0000 0000  ................

0000a30: 0000 0000 0000 0000 0000 0000 0000 0000  ................

0000a40: 0000 0000 0000 0000 0000 0000 1b00 0000  ................

0000a50: 0100 0000 0200 0000 3481 0408 3401 0000  ........4...4...

0000a60: 1300 0000 0000 0000 0000 0000 0100 0000  ................

0000a70: 0000 0000 2300 0000 0700 0000 0200 0000  ....#...........

0000a80: 4881 0408 4801 0000 2000 0000 0000 0000  H...H... .......

0000a90: 0000 0000 0400 0000 0000 0000 3100 0000  ............1...

0000aa0: 0700 0000 0200 0000 6881 0408 6801 0000  ........h...h...

0000ab0: 2400 0000 0000 0000 0000 0000 0400 0000  $...............

0000ac0: 0000 0000 4400 0000 f6ff ff6f 0200 0000  ....D......o....

0000ad0: 8c81 0408 8c01 0000 2000 0000 0500 0000  ........ .......

0000ae0: 0000 0000 0400 0000 0400 0000 4e00 0000  ............N...

0000af0: 0b00 0000 0200 0000 ac81 0408 ac01 0000  ................

0000b00: 5000 0000 0600 0000 0100 0000 0400 0000  P...............

0000b10: 1000 0000 5600 0000 0300 0000 0200 0000  ....V...........

0000b20: fc81 0408 fc01 0000 4a00 0000 0000 0000  ........J.......

0000b30: 0000 0000 0100 0000 0000 0000 5e00 0000  ............^...

0000b40: ffff ff6f 0200 0000 4682 0408 4602 0000  ...o....F...F...

0000b50: 0a00 0000 0500 0000 0000 0000 0200 0000  ................

0000b60: 0200 0000 6b00 0000 feff ff6f 0200 0000  ....k......o....

0000b70: 5082 0408 5002 0000 2000 0000 0600 0000  P...P... .......

0000b80: 0100 0000 0400 0000 0000 0000 7a00 0000  ............z...

0000b90: 0900 0000 0200 0000 7082 0408 7002 0000  ........p...p...

0000ba0: 0800 0000 0500 0000 0000 0000 0400 0000  ................

0000bb0: 0800 0000 8300 0000 0900 0000 0200 0000  ................

0000bc0: 7882 0408 7802 0000 1800 0000 0500 0000  x...x...........

0000bd0: 0c00 0000 0400 0000 0800 0000 8c00 0000  ................

0000be0: 0100 0000 0600 0000 9082 0408 9002 0000  ................

0000bf0: 3000 0000 0000 0000 0000 0000 0400 0000  0...............

0000c00: 0000 0000 8700 0000 0100 0000 0600 0000  ................

0000c10: c082 0408 c002 0000 4000 0000 0000 0000  ........@.......

0000c20: 0000 0000 0400 0000 0400 0000 9200 0000  ................

0000c30: 0100 0000 0600 0000 0083 0408 0003 0000  ................

0000c40: 6c01 0000 0000 0000 0000 0000 1000 0000  l...............

0000c50: 0000 0000 9800 0000 0100 0000 0600 0000  ................

0000c60: 6c84 0408 6c04 0000 1c00 0000 0000 0000  l...l...........

0000c70: 0000 0000 0400 0000 0000 0000 9e00 0000  ................

0000c80: 0100 0000 0200 0000 8884 0408 8804 0000  ................

0000c90: 1800 0000 0000 0000 0000 0000 0400 0000  ................

0000ca0: 0000 0000 a600 0000 0100 0000 0200 0000  ................

0000cb0: a084 0408 a004 0000 2400 0000 0000 0000  ........$.......

0000cc0: 0000 0000 0400 0000 0000 0000 b400 0000  ................

0000cd0: 0100 0000 0200 0000 c484 0408 c404 0000  ................

0000ce0: 7c00 0000 0000 0000 0000 0000 0400 0000  |...............

0000cf0: 0000 0000 be00 0000 0100 0000 0300 0000  ................

0000d00: 4095 0408 4005 0000 0800 0000 0000 0000  @...@...........

0000d10: 0000 0000 0400 0000 0000 0000 c500 0000  ................

0000d20: 0100 0000 0300 0000 4895 0408 4805 0000  ........H...H...

0000d30: 0800 0000 0000 0000 0000 0000 0400 0000  ................

0000d40: 0000 0000 cc00 0000 0100 0000 0300 0000  ................

0000d50: 5095 0408 5005 0000 0400 0000 0000 0000  P...P...........

0000d60: 0000 0000 0400 0000 0000 0000 d100 0000  ................

0000d70: 0600 0000 0300 0000 5495 0408 5405 0000  ........T...T...

0000d80: c800 0000 0600 0000 0000 0000 0400 0000  ................

0000d90: 0800 0000 da00 0000 0100 0000 0300 0000  ................

0000da0: 1c96 0408 1c06 0000 0400 0000 0000 0000  ................

0000db0: 0000 0000 0400 0000 0400 0000 df00 0000  ................

0000dc0: 0100 0000 0300 0000 2096 0408 2006 0000  ........ ... ...

0000dd0: 1800 0000 0000 0000 0000 0000 0400 0000  ................

0000de0: 0400 0000 e800 0000 0100 0000 0300 0000  ................

0000df0: 3896 0408 3806 0000 0400 0000 0000 0000  8...8...........

0000e00: 0000 0000 0400 0000 0000 0000 ee00 0000  ................

0000e10: 0800 0000 0300 0000 3c96 0408 3c06 0000  ........<...<...

0000e20: 0800 0000 0000 0000 0000 0000 0400 0000  ................

0000e30: 0000 0000 f300 0000 0100 0000 3000 0000  ............0...

0000e40: 0000 0000 3c06 0000 5900 0000 0000 0000  ....<...Y.......

0000e50: 0000 0000 0100 0000 0100 0000 fc00 0000  ................

0000e60: 0100 0000 0000 0000 0000 0000 9506 0000  ................

0000e70: 2000 0000 0000 0000 0000 0000 0100 0000   ...............

0000e80: 0000 0000 0b01 0000 0100 0000 0000 0000  ................

0000e90: 0000 0000 b506 0000 1b00 0000 0000 0000  ................

0000ea0: 0000 0000 0100 0000 0000 0000 1b01 0000  ................

0000eb0: 0100 0000 0000 0000 0000 0000 d006 0000  ................

0000ec0: 8c00 0000 0000 0000 0000 0000 0100 0000  ................

0000ed0: 0000 0000 2701 0000 0100 0000 0000 0000  ....'...........

0000ee0: 0000 0000 5c07 0000 4800 0000 0000 0000  ....\...H.......

0000ef0: 0000 0000 0100 0000 0000 0000 3501 0000  ............5...

0000f00: 0100 0000 0000 0000 0000 0000 a407 0000  ................

0000f10: 3700 0000 0000 0000 0000 0000 0100 0000  7...............

0000f20: 0000 0000 4101 0000 0100 0000 0000 0000  ....A...........

0000f30: 0000 0000 dc07 0000 3400 0000 0000 0000  ........4.......

0000f40: 0000 0000 0400 0000 0000 0000 4e01 0000  ............N...

0000f50: 0100 0000 3000 0000 0000 0000 1008 0000  ....0...........

0000f60: 9600 0000 0000 0000 0000 0000 0100 0000  ................

0000f70: 0100 0000 5901 0000 0100 0000 0000 0000  ....Y...........

0000f80: 0000 0000 a608 0000 1200 0000 0000 0000  ................

0000f90: 0000 0000 0100 0000 0000 0000 1100 0000  ................

0000fa0: 0300 0000 0000 0000 0000 0000 b808 0000  ................

0000fb0: 6901 0000 0000 0000 0000 0000 0100 0000  i...............

0000fc0: 0000 0000 0100 0000 0200 0000 0000 0000  ................

0000fd0: 0000 0000 1410 0000 9004 0000 2500 0000  ............%...

0000fe0: 3500 0000 0400 0000 1000 0000 0900 0000  5...............

0000ff0: 0300 0000 0000 0000 0000 0000 a414 0000  ................

0001000: fa01 0000 0000 0000 0000 0000 0100 0000  ................

0001010: 0000 0000 0000 0000 0000 0000 0000 0000  ................

0001020: 0000 0000 0000 0000 3481 0408 0000 0000  ........4.......

0001030: 0300 0100 0000 0000 4881 0408 0000 0000  ........H.......

0001040: 0300 0200 0000 0000 6881 0408 0000 0000  ........h.......

0001050: 0300 0300 0000 0000 8c81 0408 0000 0000  ................

0001060: 0300 0400 0000 0000 ac81 0408 0000 0000  ................

0001070: 0300 0500 0000 0000 fc81 0408 0000 0000  ................

0001080: 0300 0600 0000 0000 4682 0408 0000 0000  ........F.......

0001090: 0300 0700 0000 0000 5082 0408 0000 0000  ........P.......

00010a0: 0300 0800 0000 0000 7082 0408 0000 0000  ........p.......

00010b0: 0300 0900 0000 0000 7882 0408 0000 0000  ........x.......

00010c0: 0300 0a00 0000 0000 9082 0408 0000 0000  ................

00010d0: 0300 0b00 0000 0000 c082 0408 0000 0000  ................

00010e0: 0300 0c00 0000 0000 0083 0408 0000 0000  ................

00010f0: 0300 0d00 0000 0000 6c84 0408 0000 0000  ........l.......

0001100: 0300 0e00 0000 0000 8884 0408 0000 0000  ................

0001110: 0300 0f00 0000 0000 a084 0408 0000 0000  ................

0001120: 0300 1000 0000 0000 c484 0408 0000 0000  ................

0001130: 0300 1100 0000 0000 4095 0408 0000 0000  ........@.......

0001140: 0300 1200 0000 0000 4895 0408 0000 0000  ........H.......

0001150: 0300 1300 0000 0000 5095 0408 0000 0000  ........P.......

0001160: 0300 1400 0000 0000 5495 0408 0000 0000  ........T.......

0001170: 0300 1500 0000 0000 1c96 0408 0000 0000  ................

0001180: 0300 1600 0000 0000 2096 0408 0000 0000  ........ .......

0001190: 0300 1700 0000 0000 3896 0408 0000 0000  ........8.......

00011a0: 0300 1800 0000 0000 3c96 0408 0000 0000  ........<.......

00011b0: 0300 1900 0000 0000 0000 0000 0000 0000  ................

00011c0: 0300 1a00 0000 0000 0000 0000 0000 0000  ................

00011d0: 0300 1b00 0000 0000 0000 0000 0000 0000  ................

00011e0: 0300 1c00 0000 0000 0000 0000 0000 0000  ................

00011f0: 0300 1d00 0000 0000 0000 0000 0000 0000  ................

0001200: 0300 1e00 0000 0000 0000 0000 0000 0000  ................

0001210: 0300 1f00 0000 0000 0000 0000 0000 0000  ................

0001220: 0300 2000 0000 0000 0000 0000 0000 0000  .. .............

0001230: 0300 2100 0000 0000 0000 0000 0000 0000  ..!.............

0001240: 0300 2200 0100 0000 0000 0000 0000 0000  ..".............

0001250: 0400 f1ff 0c00 0000 4095 0408 0000 0000  ........@.......

0001260: 0100 1200 1a00 0000 4895 0408 0000 0000  ........H.......

0001270: 0100 1300 2800 0000 5095 0408 0000 0000  ....(...P.......

0001280: 0100 1400 3500 0000 3083 0408 0000 0000  ....5...0.......

0001290: 0200 0d00 4b00 0000 3c96 0408 0100 0000  ....K...<.......

00012a0: 0100 1900 5a00 0000 4096 0408 0400 0000  ....Z...@.......

00012b0: 0100 1900 6800 0000 9083 0408 0000 0000  ....h...........

00012c0: 0200 0d00 0100 0000 0000 0000 0000 0000  ................

00012d0: 0400 f1ff 7400 0000 4495 0408 0000 0000  ....t...D.......

00012e0: 0100 1200 8100 0000 3c85 0408 0000 0000  ........<.......

00012f0: 0100 1100 8f00 0000 5095 0408 0000 0000  ........P.......

0001300: 0100 1400 9b00 0000 4084 0408 0000 0000  ........@.......

0001310: 0200 0d00 b100 0000 0000 0000 0000 0000  ................

0001320: 0400 f1ff b800 0000 2096 0408 0000 0000  ........ .......

0001330: 0100 1700 ce00 0000 4095 0408 0000 0000  ........@.......

0001340: 0000 1200 df00 0000 4095 0408 0000 0000  ........@.......

0001350: 0000 1200 f200 0000 5495 0408 0000 0000  ........T.......

0001360: 0100 1500 fb00 0000 3896 0408 0000 0000  ........8.......

0001370: 2000 1800 0601 0000 d083 0408 0500 0000   ...............

0001380: 1200 0d00 1601 0000 0083 0408 0000 0000  ................

0001390: 1200 0d00 1d01 0000 0000 0000 0000 0000  ................

00013a0: 2000 0000 2c01 0000 0000 0000 0000 0000   ...,...........

00013b0: 2000 0000 4001 0000 8884 0408 0400 0000   ...@...........

00013c0: 1100 0f00 4701 0000 6c84 0408 0000 0000  ....G...l.......

00013d0: 1200 0e00 4d01 0000 0000 0000 0000 0000  ....M...........

00013e0: 1200 0000 6a01 0000 8c84 0408 0400 0000  ....j...........

00013f0: 1100 0f00 7901 0000 3896 0408 0000 0000  ....y...8.......

0001400: 1000 1800 8601 0000 9084 0408 0000 0000  ................

0001410: 1102 0f00 9301 0000 4c95 0408 0000 0000  ........L.......

0001420: 1102 1300 a001 0000 e083 0408 5a00 0000  ............Z...

0001430: 1200 0d00 b001 0000 3c96 0408 0000 0000  ........<.......

0001440: 1000 f1ff bc01 0000 4496 0408 0000 0000  ........D.......

0001450: 1000 f1ff c101 0000 0000 0000 0000 0000  ................

0001460: 1200 0000 d101 0000 3c96 0408 0000 0000  ........<.......

0001470: 1000 f1ff d801 0000 3a84 0408 0000 0000  ........:.......

0001480: 1202 0d00 ef01 0000 b483 0408 1c00 0000  ................

0001490: 1200 0d00 f401 0000 9082 0408 0000 0000  ................

 



출처: 
http://www.oneone.kr/?mid=UnixPUtil&page=1&document_srl=5649 

'Language > C' 카테고리의 다른 글

02. 알아두면 정말 유용한 C소스 컴파일 과정(2)  (0) 2011.09.08
02. 알아두면 정말 유용한 C소스 컴파일 과정(1)  (0) 2011.09.08
링킹/로더  (0) 2011.09.08
모듈과 라이브러리  (0) 2011.09.08
라이브러리 공격  (0) 2011.09.08
: