找出`gcc hello_world.c -S`生成的汇编语言的类型

时间:2014-06-06 00:38:55

标签: c gcc assembly

hello_world.c

#include <stdio.h>
int main()
{
    printf("Hello World\n");
    return 0;
}

运行gcc hello_world.c -S会以汇编语言生成hello_world.s文件。

hello_world.s

    .file   "hello_world.c"
    .section    .rodata
.LC0:
    .string "Hello World"
    .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/Linaro 4.6.3-1ubuntu5) 4.6.3"
    .section    .note.GNU-stack,"",@progbits

有没有办法找出生成代码的汇编语言类型(除了知道所有汇编语言的语法之外)?

参考我自己或其他不了解此事的人:

要使您的处理器架构运行following

uname -p

1 个答案:

答案 0 :(得分:2)

默认情况下,它是目标代码CPU的GNU汇编程序的AT&amp; T语法。可以选择改变它。