OS X 10.11でアセンブリを実行する方法
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
としてみたのですが、
下記のようなエラーが出てしまいます
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
# 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