这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 物联网技术 » gcc中c程序到汇编到可执行文件的过程

共2条 1/1 1 跳转至

gcc中c程序到汇编到可执行文件的过程

专家
2016-09-23 13:23:22     打赏

偶然看了一篇对比while(1)和for(;;)的文章,发现gcc还可以生成汇编程序,决定也学习一下。
首先写了一个再简单不过的c程序test.c

main(){}

自己能想到的最简单的程序了,编译用gcc -S test.c,生成了汇编文件test.s,大小635字节

.arch armv6
        .eabi_attribute 27, 3
        .eabi_attribute 28, 1
        .fpu vfp
        .eabi_attribute 20, 1
        .eabi_attribute 21, 1
        .eabi_attribute 23, 3
        .eabi_attribute 24, 1
        .eabi_attribute 25, 1
        .eabi_attribute 26, 2
        .eabi_attribute 30, 6
        .eabi_attribute 18, 4
        .file   "test.c"
        .text
        .align  2
        .global main
        .type   main, %function
main:
        @ args = 0, pretend = 0, frame = 0
        @ frame_needed = 1, uses_anonymous_args = 0
        @ link register save eliminated.
        str     fp, [sp, #-4]!
        add     fp, sp, #0
        mov     r0, r3
        add     sp, fp, #0
        ldmfd   sp!, {fp}
        bx      lr
        .size   main, .-main
        .ident  "GCC: (Debian 4.6.3-14+rpi1) 4.6.3"
        .section        .note.GNU-stack,"",%progbits

看不懂,继续gcc -c test.s生成目标文件test.o,824字节,更看不懂,再继续gcc -o test test.o生成运行文件test,4964字节,可以运行./test,当然啥结果都没有和直接gcc test.c生成的a.out应该是一样的。



专家
2016-09-25 20:45:54     打赏
2楼
不明+1

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]