いままでいろいろなボードコンピュータ用に作ってきたモニタを見てみると、もちろんCPUアーキテクチャの違いはもちろんですが、その時のスキル、そのCPUへの理解度で様々な書き方をしていました。メモリダンプ表示にはかかせず、共通に含まれていているBIN→HEX変換処理をどうやっていたか観察してみました。
まずZ80です。引数が10以上なら7を足して48を足す、9以下なら48だけ足すというようにRETの出口を1つにする工夫をしていて、教科書的な書き方です
8085はZ80とバイナリレベルでコードコンパチで処理も同じですが相対ジャンプが使えないので少しコードサイズが大きくなっています
NECのマイクロコントローラuPD7810です。条件分岐がない代わりに演算結果による条件スキップ命令があるので、それを使ってシンプルに書けます。全CPUで最短のソースは3行、6バイトです
次はモトローラのMC6809とMC68000。おなじ68系の流れでニーモニックも似かよっています。コーディングもそれそれ参照したわけではないと思いますが、全く同じ処理をしていました。
ちょっと変わったところで固定小数点DSPのTMS32010です。マクロで記述してあったものが展開されたものを抜き出してきました。汎用的に使えるレジスタがアキュームレータ1本しかなく、全てメモリ上に置かれた値との演算になるのでかなり回りくどい書き方になっています
一方、世代が進んだ32ビット浮動小数点DSPのTMS320C30ではレジスタ数も、アドレッシングモードも増え、汎用CPUっぽいソースコードになっています。ですが1命令32ビット固定長なので簡単な処理なのにコードがやたら重厚。且つなんか「四角い」・・