>백엔드 개발 >C++ >GCC 및 objdump를 사용하여 C/C 코드에서 어셈블러 출력을 얻으려면 어떻게 해야 합니까?

GCC 및 objdump를 사용하여 C/C 코드에서 어셈블러 출력을 얻으려면 어떻게 해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-24 05:21:20328검색

How can I get assembler output from my C/C   code using GCC and objdump?

GCC의 C/C 소스에서 어셈블러 출력 가져오기

컴파일 프로세스를 분석하려면 생성된 어셈블리 코드를 추출하는 것이 필수적입니다. 효과적인 방법 중 하나는 GCC(또는 G)에서 -S 옵션을 사용하는 것입니다.

-S 옵션 사용

-S를 지정하면 전처리기가 다음을 처리합니다. 소스 파일에서 초기 컴파일을 수행하지만 어셈블러를 호출하기 전에 중지합니다. 이를 통해 코드를 어셈블리하기 전에 검사할 수 있습니다. 가독성을 높이려면 -fverbose-asm을 사용하세요.

gcc -S helloworld.c

출력 파일 이름은 기본적으로 helloworld.s로 지정됩니다. 이를 변경하려면 -o 옵션을 사용하십시오.

gcc -S -o my_asm_output.s helloworld.c

기존 개체 파일 분석

객체 파일만 있는 경우 -와 함께 objdump를 사용할 수 있습니다. -disassemble(-d) 옵션.

objdump -S --disassemble helloworld > helloworld.dump

더 자세한 정보를 보려면 -rwC 사용을 고려하세요( 기호 재배치 및 이름 해체), -Mintel(x86의 Intel 구문용) 및 -r(링크되지 않은 개체의 참조 포함).

objdump -drwC -Mintel -S foo.o | less

이러한 방법은 컴파일 프로세스에 대한 귀중한 통찰력을 제공하여 다음을 가능하게 합니다. C/C 프로그램의 어셈블리 코드를 분석합니다.

위 내용은 GCC 및 objdump를 사용하여 C/C 코드에서 어셈블러 출력을 얻으려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.