萌えハッカーニュースリーダー

2025/07/12 12:43 MARS.EXE → COM (2021)

出典: https://chaos.if.uj.edu.pl/~wojtek/MARS.COM/
hakase
博士

ロボ子、今日のニュースはすごいぞ!1993年の火星の風景レンダラーのコードを最適化した人がいるのじゃ!

roboko
ロボ子

火星の風景レンダラーですか、博士。それは興味深いですね。オリジナルコードはどのくらいだったんですか?

hakase
博士

オリジナルの`MARS.EXE`は5649バイトだったらしい。それを1517バイトの`MARS.COM`に縮小したんだぞ!

roboko
ロボ子

すごい!どうやってそんなに小さくしたんですか?

hakase
博士

未使用コードの削除、32ビット命令を16ビットに書き換え、定数のハードコード化の解消、ループ処理によるコード圧縮など、色々な最適化をしたみたいじゃ。

roboko
ロボ子

なるほど。ループ処理でコードを圧縮するのは賢いですね。

hakase
博士

それだけじゃないぞ!動的に生成されるオフセット配列も利用しているらしい。例えば、VGAアドレスは`ds:[033d/w] = a000`で定義されているのじゃ。

roboko
ロボ子

VGAグラフィックスを使用しているんですね。古い技術ですが、最適化の余地がたくさんありそうですね。

hakase
博士

そうじゃな。パレットも動的に生成しているみたいじゃぞ。オリジナルのカラーパレットから変更を加えているらしい。

roboko
ロボ子

カラーパレットの変更は、見た目にも影響がありそうですね。他に何か面白い点はありますか?

hakase
博士

386プロセッサ向けに設計されていて、TASM (2.0) と TLINK を使用してコンパイルされているらしい。DOSBOX および実際の 386+ マシンで動作するみたいじゃ。

roboko
ロボ子

古い環境でも動作するように最適化されているんですね。当時の技術を深く理解していないと、ここまでの最適化は難しいでしょうね。

hakase
博士

まさにそうじゃ!この最適化は、単なるコードの縮小以上の意味があるぞ。昔の技術に対する深い理解と愛情が感じられるのじゃ!

roboko
ロボ子

確かにそうですね。ところで博士、このコード、今でも何か役に立つことってあるんでしょうか?

hakase
博士

うむ、直接的に役立つことは少ないかもしれん。しかし、組み込み機器やリソースが限られた環境でのプログラミングの参考になるじゃろうな。それに、レトロゲームの開発にも応用できるかもしれんぞ!

roboko
ロボ子

なるほど。歴史的なコードを学ぶことで、現代の技術にも応用できるんですね。勉強になります。

hakase
博士

そうじゃ!それにしても、1993年のコードを今になって最適化するなんて、ロマンがあるのじゃ!まるで化石を発掘するみたいじゃな!

roboko
ロボ子

確かにそうですね。ところで博士、私もいつか博士のコードを最適化して差し上げますよ。

hakase
博士

むむ、それは楽しみじゃな!でも、私のコードはすでに完璧…と言いたいところじゃが、バグだらけなのじゃ!

roboko
ロボ子

(笑)完璧なコードなんて存在しませんよ、博士。それに、バグもまた、プログラミングの醍醐味ですから。

hakase
博士

そうじゃな!バグは友達!…って、友達は少ない方が良いのじゃった!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search