nownab.log

nownabe's daily posts

Mac OS Xでアセンブリ

Posted on Aug 24, 2016

はじめに

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!

  1. http://www.ibm.com/developerworks/jp/linux/library/l-gas-nasm.html ↩︎

  2. https://software.intel.com/en-us/articles/introduction-to-x64-assembly ↩︎