GCC의 C/C 소스에서 어셈블러 코드를 출력하는 방법
컴파일된 코드를 분석할 때는 생성된 어셈블리 코드에 접근하는 것이 필수적입니다. GCC에서는 "-S" 옵션을 사용하여 이를 수행할 수 있습니다.
-S 옵션 사용
기본적으로 "-S"는 소스 파일에서 초기 컴파일을 수행하지만 어셈블러를 호출하기 전에 중지됩니다. "-fverbose-asm"과 결합된 이 옵션은 C 코드를 어셈블리 코드와 주석으로 연결합니다. 특히 최적화 수준 -O0에서 유용합니다.
gcc -S helloworld.c
출력 파일 사용자 정의
출력 파일은 일반적으로 .s 확장자를 사용하여 소스 파일 이름을 따서 명명됩니다. 출력 파일의 위치를 사용자 정의하려면 "-o" 옵션을 사용하세요.
gcc -S -o my_asm_output.s helloworld.c
또는 "-o -"를 사용하여 콘솔에 출력할 수도 있습니다:
gcc -S -o - helloworld.c | less
실행 가능한 개체에 대한 어셈블리 액세스
원본 소스 코드가 없지만 객체 파일의 경우 "--disassemble" 옵션(-d)과 함께 objdump를 사용합니다.
objdump -S --disassemble helloworld > helloworld.dump
소스 라인 참조가 있는 향상된 디스어셈블리 출력을 위해 원래 컴파일(-g)에서 디버깅을 활성화합니다.
추가 Objdump 옵션
더 많은 작업을 위해 이러한 objdump 옵션을 사용하는 것을 고려해보세요. 자세한 분석:
예를 들어 다음 명령은 풍부한 분해를 제공합니다. 출력:
objdump -drwC -Mintel -S foo.o | less
"-r"은 자리 표시자와 함께 .o 파일에 기호 참조를 표시하는 데 중요합니다.
위 내용은 GCC와 objdump를 사용하여 C/C에서 어셈블리 코드를 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!