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用のコンパイルも試してみようと思います。
以上です。