> 백엔드 개발 > C++ > GCC를 사용하여 C/C 소스에서 생성된 어셈블리 코드에 어떻게 액세스할 수 있습니까?

GCC를 사용하여 C/C 소스에서 생성된 어셈블리 코드에 어떻게 액세스할 수 있습니까?

Patricia Arquette
풀어 주다: 2024-12-23 02:27:24
원래의
734명이 탐색했습니다.

How Can I Access the Assembly Code Generated from C/C   Source Using GCC?

GCC의 C/C 소스에서 어셈블러 출력 액세스

컴파일 프로세스를 분석하려면 생성된 어셈블리 코드를 추출하는 것이 유용한 경우가 많습니다. . 이는 GCC를 사용하여 두 가지 방법으로 달성할 수 있습니다.

-S 옵션 사용:

gcc 명령에 -S 옵션을 추가하면 전처리기가 호출됩니다. , 초기 컴파일이 발생합니다. 그러나 조립 단계 이전에 프로세스가 중단됩니다. 일반적으로 file_name.s라는 이 부분 컴파일 출력에는 원본 C/C 소스에 해당하는 어셈블리 코드가 포함되어 있습니다.

objdump 사용:

객체만 파일을 사용할 수 있으면 objdump 유틸리티를 사용하여 어셈블리 코드를 추출할 수 있습니다. --disassemble (-d) 옵션을 추가하면 objdump가 개체 파일의 디스어셈블리를 생성합니다. 디버그 정보(-g 사용)를 사용하여 컴파일을 수행한 경우 가독성을 높이기 위해 소스 행이 디스어셈블리와 인터리브됩니다.

예:

gcc -S source_file.c
objdump -S --disassemble object_file.o > assembly_output.txt
로그인 후 복사

gcc의 -S 옵션은 source_file.s라는 어셈블리 파일을 생성합니다. objdump 명령은 가능한 경우 소스 라인이 포함된 개체 파일의 디스어셈블리를 포함하는 Assembly_output.txt라는 텍스트 파일을 생성합니다.

출력 사용자 정의를 위한 추가 objdump 옵션은 다음과 같습니다.

  • -rwC: 기호 재배치를 표시하고 줄 바꿈을 비활성화하며 C를 분해합니다. names.
  • -Mintel: AT&T 대신 x86 어셈블리에 Intel 구문을 사용합니다.

위 내용은 GCC를 사용하여 C/C 소스에서 생성된 어셈블리 코드에 어떻게 액세스할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿