C语言源文件到汇编语言的编译

这是我们经常写的最简单的程序:

#include <stdio.h>
int main()
{
printf(“Hello,world!\n”);
    return 0;
}

在我们使用gcc指令来编译C语言源文件的时候,在命令行输入下面命令:

[root@localhost kangkang]# gcc -o hello hello.c   //#编译C代码生成目标文件为hello。

默认情况下,gcc指令将编译连接过程一步完成,使用适当的选项可以将编译过程分步骤完成。使用“-E”选项仅完成编译预处理操作:

[root@localhost kangkang]# gcc -E -o hello.i hello.c   //#仅执行编译预处理,指定预处理后生成的文件。

接下来,使用“-S”选项生成汇编代码。在命令行中输入下面的命令:

[root@localhost kangkang]# gcc -S -o hello.s hello.i    //#将C语言转换为汇编源代码文件“hello.s”  。

最后,使用cat指令查看生成的“.s”文件:

[root@localhost kangkang]# cat hello.s
        .file   “hello.c”
        .section        .rodata
.LC0:
        .string “Hello,world!”
        .text
.globl main
        .type   main, @function
main:
        leal    4(%esp), %ecx
        andl    $-16, %esp
        pushl   -4(%ecx)
        pushl   %ebp
        movl    %esp, %ebp
        pushl   %ecx
        subl    $4, %esp
        movl    $.LC0, (%esp)
        call    puts
        movl    $0, %eax
        addl    $4, %esp
        popl    %ecx
        popl    %ebp
        leal    -4(%ecx), %esp
        ret
        .size   main, .-main
        .ident  “GCC: (GNU) 4.1.2 20070626 (Red Hat 4.1.2-14)”
        .section        .note.GNU-stack,””,@progbits

使用as指令的“-o”选项可以将汇编代码文件编译为目标文件:

[root@localhost kangkang]# as -o hello.o hello.s      //#将汇编文件编译为目标文件。

    原文作者:风吹花裤衩
    原文地址: https://blog.csdn.net/ZHANG_kang/article/details/53040553
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞