Macでnasm(アセンブラ)を使う
MacでCファイルとアセンブリをリンクして,実行する方法.
用意するもの
- foo.asm
- アセンブリを書いたファイル
GLOBAL _foo _foo: push ebp mov ebp, esp sub esp, 4 mov eax, [ebp+8] imul eax, [ebp+8] mov [ebp-4], eax mov eax, [ebp-4] add eax, 2 mov esp, ebp pop ebp ret
これはCで書くと以下と同じ.
int foo(int x) { int y = x * x; return y + 2; }
- main.c
- Cのソースコード
#include <stdio.h> main() { printf("%d\n", foo(3)); }
以上.nasmは元々入っているはず.
実行手順
$ nasm -f macho foo.nasm # これでfoo.oというファイルが作られる $ gcc -o main main.c foo.o # コンパイル $ ./main # 実行.上記のファイルなら11が出力されるはず
nasmのfオプションの値はlinuxならelf,windowns(cygwin)ならwin32にすれば,後は同じ.nasm -hfとすれば色々出てきます.
*1:シンタックス・ハイライトがnasmに対応してる.はてなすごい…