

OS X 10.11でアセンブリを実行するにはどうすればいいのでしょうか?  
GCCだと普通にアセンブルできるようなのですが(`gcc -o helloworld helloworld.s`でアセンブルできるらしい)  
clangではどうすればいいのでしょうか?

* * *

### 追記

OS X に`as`というコマンドがあり、それがアセンブルをするためのコマンドらしいということは分かりました

* * *

### 追記 2

`as -arch x86_64 -o helloworld
helloworld.s`と実行したところ,`helloworld`というファイルが生成されたのですが、その後うまく`ld`ができません。  
`ld -macosx_version_min 10.11 helloworld`としてみたのですが、  
下記のようなエラーが出てしまいます

[code]

    ld: warning: -macosx_version_min not specified, assuming 10.10
    ld: warning: object file (helloworld) was built for newer OSX version (10.11) than being linked (10.10)
    ld: dynamic main executables must link with libSystem.dylib for inferred architecture x86_64
    
[/code]

* * *
[code]

    
    # original: http://dustin.schultz.io/blog/2010/11/15/mac-os-x-64-bit-assembly-system-calls/
    
    # https://gist.github.com/h2so5/d429d0aec527482f6209
    
    .data
    hello_world: .asciz "Hello world!\n"
    
    .text
    .globl _main
    
    _main:
    mov $0x2000004, %rax
    mov $1, %rdi
    lea hello_world(%rip), %rsi
    mov $14, %rdx
    syscall
    mov $0x2000001, %rax
    mov $0, %rdi
    syscall
    
    
[/code]


CC BY-SA 3.0
2016-01-15T13:42:48.370
20957
2016-04-25T19:20:41.737
2016-01-16T04:21:39.980
5246
5246
question
assembly
OS X 10.11でアセンブリを実行する方法


cc(1)がld(1)をどのように実行しているかは、

[code]

    cc -v -o helloworld helloworld.s
    
[/code]

といった感じに`-v`オプションを指定すると調べることができます。(表示された個々のオプションの意味はld(1)のオンラインマニュアルで確認しましょう。)

また、as(1)でアッセンブルした結果のオブジェクト・ファイルは通常、

[code]

    as -arch x86_64 -o helloworld.o helloworld.s
    
[/code]

と`.o`のファイル名を使用します。


CC BY-SA 3.0
2016-01-26T15:15:58.690
21352
2016-01-26T15:15:58.690
14124
20957
answer