프로그래밍 언어/C++

gcc의 C / C ++ 소스에서 assembler output 얻는 방법

Rateye 2021. 7. 27. 10:35
728x90
반응형
질문 : gcc의 C / C ++ 소스에서 어셈블러 출력을 어떻게 얻습니까?

어떻게해야합니까?

무언가가 어떻게 컴파일되는지 분석하고 싶다면 내 보낸 어셈블리 코드를 어떻게 얻을 수 있습니까?

반응형
답변

gcc (또는 g ++)에 -S 옵션을 사용합니다.

gcc -S helloworld.c

이것은 helloworld.c를 통해 전 처리기 (cpp)를 실행하고 초기 컴파일을 수행 한 다음 어셈블러가 실행되기 전에 중지됩니다.

helloworld.s 파일을 출력합니다. -o 옵션을 사용하여 출력 파일을 설정할 수 있습니다.

gcc -S -o my_asm_output.s helloworld.c

물론 이것은 원본 소스가있는 경우에만 작동합니다. 결과 객체 파일 만있는 경우 대안 --disassemble 옵션 (또는 축약 된 형식의 경우 -d 을 설정하여 objdump

objdump -S --disassemble helloworld > helloworld.dump

이 옵션은 디버깅 옵션이 개체 파일 ( -g 에 대해 활성화되고 파일이 제거되지 않은 경우 가장 잘 작동합니다.

file helloworld 실행하면 objdump를 사용하여 얻을 수있는 세부 정보 수준을 알 수 있습니다.

출처 : https://stackoverflow.com/questions/137038/how-do-you-get-assembler-output-from-c-c-source-in-gcc

 

728x90
반응형