gcc에서 어셈블한 결과를 보는 방법


코드가 컴파일 된 결과를 분석하라는 과제를 받았는데 제가 아직 gcc가 익숙하지 않아서 어떤 옵션을 줘야 할지 모르겠어요

gcc로 C/C++의 어셈블리 코드를 보려면 어떻게 해야 되나요?

  • 2016년 02월 25일에 작성됨

조회수 313


2 답변


-S 옵션을 주면됩니다.

gcc -S 소스코드.c

  • 2016년 02월 25일에 작성됨


gcc 에 -S 옵션으로 아래와 같이 어셈블리 코드를 생성할 수 있습니다. -o 옵션을 별도로 주지 않으면 소스코드와 동일한 이름에 .s suffix 를 갖는 파일로 어셈블리 코드를 생성합니다.

$ cat hello.c
#include <stdio.h>

int main(void)
{
    printf("hello dcslab guest ;)\n");

    return 0;
}
$ gcc -S hello.c
$ cat hello.s
    .file   "hello.c"
    .section    .rodata
.LC0:
    .string "hello dcslab guest ;)"
    .text
    .globl  main
    .type   main, @function
main:
.LFB0:
    .cfi_startproc
    pushq   %rbp
    .cfi_def_cfa_offset 16
    .cfi_offset 6, -16
    movq    %rsp, %rbp
    .cfi_def_cfa_register 6
    movl    $.LC0, %edi
    call    puts
    movl    $0, %eax
    popq    %rbp
    .cfi_def_cfa 7, 8
    ret
    .cfi_endproc
.LFE0:
    .size   main, .-main
    .ident  "GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.1) 4.8.4"
    .section    .note.GNU-stack,"",@progbits

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close