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

조회수 3610회

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

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

2 답변

  • -S 옵션을 주면됩니다.

    gcc -S 소스코드.c

  • 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 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.