프로그래밍을 하다 보면 소스코드 뿐만 아니라
실제로 어떻게 실행되는가에 대한 이해가 필요하다.
cpu의 동작과 os 스케쥴링에 대한 내용을 이해하고 있다면 실제적으로 컴파일의 동작을 알아봐야 한다.
GNU에서 제공하는 툴중 바이너리 파일을 살펴볼 수 있는 objdump가 있다.
사용법)
objdump의 옵션 중 필요한걸 간추려 정리하도록 하겠다
-i 타겟 포맷정보
-b 포맷 지정
-s 오브젝트 파일 전체 덤프
-j 오브젝트 파일의 특정 섹션 덤프
-h 섹션헤더 덤프
-d 오브젝트 파일의 역어셈블
etc)
--prefix-address : 심볼을 기준으로 상대 어드레스 표시
--show-raw-insn : 명령어 코드 표시
-l : 소스파일이 있는 경우, 소스 코드의 라인 표시
-S : 소스파일이 있는 경우, 소스 파일 내에 표시
응용 1
main 의 기계어
objdump로 간단한 프로그래밍의 기계어와 주소를 뽑아 봤다.
(4004e6:)첫줄에 나오는 16진수는 메모리 주소이다
즉, cpu에서 로드할 기계어 명령어가 저장된 주소
출처 :
'Linux > Linux 명령어' 카테고리의 다른 글
netstat 명령어 (0) | 2020.10.23 |
---|---|
리눅스에서 붙여넣기 ctrl + v 사용 (0) | 2020.10.20 |
strings 명령어 (0) | 2020.10.06 |
man 명령어 (0) | 2020.10.05 |
Linux) file 명령어 (0) | 2020.10.05 |