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
반응형
'프로그래밍 언어 > C++' 카테고리의 다른 글
C ++ 17의 새로운 기능 (0) | 2021.07.27 |
---|---|
메서드가 Moq에서 호출되지 않았는지 확인하는 방법 (0) | 2021.07.27 |
C ++ 표준 int, long 유형의 크기 기준 (0) | 2021.07.27 |
C ++ 컴파일이 오래 걸리는 이유 (0) | 2021.07.23 |
Collatz 추측을 테스트하기위한 C ++ 코드가 손으로 작성한 어셈블리보다 빠르게 실행되는 이유 (0) | 2021.07.23 |