はじめに
Mac OS Xでの、
- アセンブラのインストール
- アセンブリを実行形式まで
です。
アセンブラインストール
まずはアセンブラをインストールします。 今回はNASMというアセンブラを使います。1
Homebrewで入るのは古いので、ソースからビルドします。 パスは適当に通してください。
wget http://www.nasm.us/pub/nasm/releasebuilds/2.12.02/nasm-2.12.02.tar.gz
tar zxvf nasm-2.12.02.tar.gz
cd nasm-2.12.02
./configure --prefix=$HOME
make -j4
make install
アセンブル
アセンブリのプログラムを書いて、アセンブルしてみます。
x86_64アセンブリ2のHello Worldです。
section .data
hello_world db "Hello World!", 0x0a
section .text
global start
start:
mov rax, 0x2000004
mov rdi, 1
mov rsi, hello_world
mov rdx, 14
syscall
mov rax, 0x2000001
mov rdi, 0
syscall
アセンブルは次のコマンドです。
~/bin/nasm -f macho64 helloworld.asm
-f
は出力形式を示すオプションです。Macだとmacho64
にしておくのが無難です。
そうすると、helloworld.o
というオブジェクトファイルが出力されます。
$ ls
helloworld.asm helloworld.o
$ file helloworld.o
helloworld.o: Mach-O 64-bit object x86_64
最後に、オブジェクトファイルをリンクします。
ld helloworld.o
a.out
という実行ファイルが出力されるので、そいつを実行すればHello World!
と表示されます。
$ ./a.out
Hello World!