MacでNasm+gccでアセンブラ(アセンブリを書いてみる)
はじめに
現在OSは下記のバージョンを利用中です。
この記事はMacでアセンブラを少し走らせてみたいなという人を対象にしています。
nasmインストール
brew install nasm
今回このnasm+ldでうまくコンパイルできなかったので
gccを後半利用しています。
コードを書く
hello.asmで保存します。
; hello.asm
GLOBAL _main
SECTION .data
str_hello db "Hello World", 0x0a ; Output string and \n
SECTION .text
_main:
mov rax, 0x2000004 ; Set system call to write=4.
mov rdi, 1 ; Set output to stdout.
mov rsi, str_hello ; Set output data.
mov rdx, 13 ; Set output data size.
syscall ; Call system call.
mov rax, 0x2000001 ; Set system call to exit=1.
mov rdi, 0 ; Set success value of exit.
syscall ; Call system call.
中間ファイル .oファイル作成
nasm -f macho64 hello.asm
これで hello.o が完成
コンパイル
本来
ld -o hello hello.o
これでいけるはずなのですが、エラー。
(追記)下記でいけました。
ld -macosx_version_min 10.11 -lSystem -o hello hello.o
gccを利用する場合は
gcc -o hello hello.o
これでhelloが作成されるので
./hello
で実行無事 hello would