アセンブリで Hello, World を書く
今日は普段より遅めに起きて出社したにも関わらず睡眠障害の一連の症状によって体調があまり芳しくなく早く機械の体になりたいという気持ちがあったため昼休みにアセンブリ言語を書いていた。
コードを書く
hello.asm
として以下のコードを記述する。
section .text global main main: push dword len push dword msg push dword 1 mov eax, 0x4 sub esp, 4 int 0x80 add esp, 16 push dword 0 mov eax, 0x1 sub esp, 4 int 0x80 section .data msg db "Hello, World", 0xa len equ $-msg
アセンブルする
nasm アセンブラでコードをコンパイル(アセンブル)する。
-f
オプションでアウトプットするファイルのフォーマットを指定する。
指定可能なフォーマットの一覧はnasm -hf
で見ることができる。
$ nasm -f macho hello.asm
リンクする
コンパイルしてできたオブジェクトファイルを実行可能ファイルにリンクする。
-e
オプションでコードのエントリポイントを指定する。
$ ld -o hello -e main hello.o
実行する
実行する。
$ ./hello Hello, World
所感
機械の体にはなれなかったけど楽しかった。
--