2016年9月 - 炫Q香蕉派

2016年9月

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

偶然看了一篇对比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应该是一样的。

参考:http://bbs.ickey.cn/community/forum.php?mod=viewthread&tid=66565&extra=

炫Q的树莓派zero体验记录

首先感谢羞弟帮大家抢到一批zero,又历尽辛苦转运回来,炫Q本来是没有预订的,结果当时正好多出一片,就在别人犹豫时抢了来,不要打我啊。
21.jpg
正面,新版多了没卵用的摄像头接口

22.jpg
背面格外的干净,毛都没有

- 阅读剩余部分 -