MacでClang

Mac OS X 10.6.5でClangを使ってみました。
今なぜClangなのか。私は詳しくないのでこの記事この記事を参考にして下さい。


さてHello world(hello.c)をGCCとClangでそれぞれコンパイルしてみます。

起動方法 内部で起動するプログラム
GCC $ gcc hello.c cc1, as, collect2
Clang $ clang hello.c as, ld


まずGCCが生成するコードを見てみます。

$ gcc hello.c -S -O3
        .cstring
LC0:
        .ascii "Hello world\0"

        .text
        .align 4,0x90
.globl _main
_main:
        pushq   %rbp
        movq    %rsp, %rbp
        leaq    LC0(%rip), %rdi
        call    _puts
        xorl    %eax, %eax
        leave
        ret


次にClangが生成するコードです。

$ clang hello.c -S -O3
        .section        __TEXT,__text,regular,pure_instructions
        .globl  _main
        .align  4, 0x90
_main:
        pushq   %rbp
        movq    %rsp, %rbp
        leaq    _str(%rip), %rdi
        callq   _puts
        xorl    %eax, %eax
        popq    %rbp
        ret

        .section        __TEXT,__cstring,cstring_literals
_str:
        .asciz   "Hello world"


ほぼ同じコードを生成しますね。


今回は x86用にコンパイルしましたが、そのうちARM用のコンパイルも試してみようと思います。


                                    以上です。