Hello, World!するアセンブリ
x86_64向けに動作するHello, World!を書いた.長いので続きからにする.
実際に実行してみると
$ as dump.s -o dump.elf $ ld -o dump --oformat binary dump.elf $ ./dump Hello, World!
となり,正常にHello, Worldできる.ただしx86_64なLinux限定.
アセンブラ(今回はGAS)は.byteディレクティブやdbディレクティブを使えばバイナリを直接吐き出せるので,画像だろうが音声だろうがアセンブラで生成することが出来る(って30日OS本に書いてあった(はず)).
ちなみに今回元にしたバイナリはなるべく小さいサイズでHello, World!をしたかったので,直にsyscallでシステムコールを叩いている.strip後のサイズは512byteだった.
使ったコードは以下にまとめてある.これで画像でもelfファイルにできるね(はぁと)って思ったけど,最初からobjcopyで良かったのでは…?