Mac OS Xでアセンブリ

created at 2016/08/24 21:14:18

はじめに

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です。

helloworld.asm
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!