実際にコードを書いてみる

use_asm.c

/* use_asm() 引数なし版 */

#include <stdio.h>
int use_asm(void);
int main(void)
{
	printf("use_asm() = %d\n", use_asm());
}

asm.s

;; nasm file

	global	_use_asm
	section .text


;; eaxレジスタの値が返り値になる
_use_asm:
	mov eax, 123h
	ret

というふたつのファイルを用意して、実際にコンパイルするには次のようにコマンドを打つ。

$ nasm -f win32 asm.s
$ gcc use_asm.c asm.obj -o use_asm
$ ./use_asm
 > use_asm() = 123

アセンブリ言語というのは実際にやってみると計算機の内部が手に取るようにわかってしまう。でも、アセンブリ言語は扱うには具体的すぎる。それに対してコンピュータの黎明期にはLISPなどで抽象化という方向性に進んだのがわかる気がする。