ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Linux] gcc 옵션 및 objdump 명령어 - c 최적화 & c 어셈블리어 추출
    SW/Linux 2020. 2. 8. 13:12

     

     어샘블리어를 추출한 후 최적의 코드를 보기위한 명령어

    --$ gcc -c -g -o main.o main.c
    --$ objdump -d -S main.o

     

    결과 

    283:   8b 05 00 00 00 00       mov    0x0(%rip),%eax        # 289 <main+0xd7>
     289:   89 c6                   mov    %eax,%esi
     28b:   bf 00 00 00 00          mov    $0x0,%edi
     290:   e8 00 00 00 00          callq  295 <main+0xe3>
     295:   be 00 00 00 00          mov    $0x0,%esi
     29a:   48 89 c7                mov    %rax,%rdi
     29d:   e8 00 00 00 00          callq  2a2 <main+0xf0>
            return 0;
     2a2:   b8 00 00 00 00          mov    $0x0,%eax

    gcc 옵션
    -o [네임]: 네임 설정 
    -c : 오브젝트 파일만 생성
    -g : 디버거를 위한 변수 테이블 생성
    -O ~ -O3 : 최적화 옵션 (중복코드 제거, 데드 코드 제거, 비용이 덜한 연산으로 자동변경)
    -L [dir] : /usr/lib or /usr/local/lib에 있지 않은 라이브러리 디렉토리 지정  
    -l [dir] : /usr/local/include or /usr/include에 있지 않은  header 파일의 루트 디렉토리를 저장   

     

    objdump 옵션

    -d : 오브젝트 파일의 역어셈블리
          [--prefix-address: 심볼 기준으로 상대 어드레스 표시
           --show-raw-insn: 명령어 코드 표시
           -l: 소스 코드의 라인표시
           -S: 소스 파일 내에 표시]
    -i : 포멧 정보
    -b : 포멧 지정
    -s : 오브젝트 파일 전체 덤프
    -j : 오브젝트 파일 측정 섹션 덤프
    -h : 헤더 덤프

    댓글

Designed by Tistory.