2020-01-12
マシン語秘伝の書を片手にx86マシン語入門が楽しい。Z80と8086のレジスタ対応表、根っこが同じと分かれば怖くない。 どちらの設計にも深く関わる、嶋正利さん

512byteのブートセクターに収まりブートする、x86マシン語で書かれた「bootBASIC」を発見! 世界最小のチェスプログラムの作者でもある、nanochessさんによる著作「Programming Boot Sector Games (PDF ver.)」を片手に、x86の入門として、16bitのリアルモード向けのbootBASICをmacOSの32bitアプリへと移植。


パスカルの三角形が動いた!


bootBASICは、使える命令も最小限、マルチステートメントもなしのシンプルなBASIC。固定メモリを使っていた元のコードを .data セクションに移して、si/diを32bit化したesi/ediに変更、BIOSの代わりに syscall を使う形にしてできあがり。 アセンブリ言語を使った開発は、アセンブラ nasm によって瞬時にバイナリ化され、即動作。スピード感が気持ちいい。


「Pascal's Triangle」 RUN on IchigoJam web
bootBASICの構文は、IchigoJam BASICにも使えるので、サンプルのプログラムそのままで動いた、パスカルの三角形!


bootBASIC_32bit src on GitHub
現在、Mac用のみ。


Programming Boot Sector Games (PDF ver.)」
1KBの半分、512byteにコンパクトに収めるためのマシン語の基本や、テクニックなど丁寧に解説された本がステキでした!

32bit化でEが付き、64bit化してRが付きと拡張されはしてますが、8bitの名機Z80(1976年)や、16bitアーキテクチャーの王様8086(1978年)の面影、しっかり残ってます。

Z80マシン語でブイブイいわせた人、最近の重量級開発環境が苦手な人、言語の流行り廃りに疲れた人、アセンブラによる超軽量開発で、マシン語でしか到達できない世界を切り開くとかどうでしょう?

links
- 41年経った今でも使える、いにしえのx86マシン語AAAをMacで動かす
- x86 - Wikipedia
- x64 アセンブリーの概要 | iSUS

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS