-
[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,%eaxgcc 옵션
-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 : 헤더 덤프'SW > Linux' 카테고리의 다른 글
[Linux] 커널 모듈 명령어 (0) 2021.04.09 [git] git add, commit, reset, stash 커밋 추가, 삭제 및 임시저장 (1) 2020.02.20 [Linux] nmap으로 주위 ip주소 찾기 (0) 2019.12.12 [Linux] df, du 시스템 공간 확인하기 (0) 2019.11.09 [Linux] sar 명령어로 시스템 리소스 확인 cpu, disk, memory, networking (0) 2019.11.09