あなたCPUなんか創ってどうするのかしら?! 第1章 第4節

~あんたCPUなんか創ってどうするのよ?! Vol.4~

2019/4/14
技術書典6
池袋サンシャインシティ 文化会館ビル2F 展示ホールD「う11」

第1章 第4節 ジャンプ命令

TD4との互換性を考慮してTD4EX4にはTD4と同じJMP命令とJNC命令を搭載します。

これらのジャンプ命令については、本プロジェクトのVol.1である「あんたCPUなんか創ってどうするのよ?!」で製作したTD4EX2で2バイト命令化し、4KBのプログラムエリアを実現してから変化していません。

これはTD4EX2の時点で完璧なものが出来たから、という訳ではありません。むしろ逆で、手の施しようが無いので諦めている、と言うのが実情です。

後述するサンプルプログラムをご覧いただくと分かりますが、TD4EX4の条件ジャンプがJNC命令しかないのは非常に不便ですし、演算結果がゼロかどうかを判別するJNZ命令やJZ命令が無いのは致命的に近い欠点です。そのため、本音でいえば改良したいのです。

表1の命令コード表を見ると、未使用の命令ビットパターンがあることに気づくでしょう。命令コードの上位4ビットの1100と1101が掲載されていません。つまり未使用なのです。ここに新しい分岐命令を追加することは不可能ではありません。

しかし筆者はそれを不採用としました。

理由はもちろんIC数の削減のためです。JNZ命令やJZ命令を搭載するためにはゼロフラグを追加しなければならず、総IC数が20個以上になってしまう恐れがありました。いっぽうJC命令だけなら容易に追加できますが、JNZ命令やJZ命令に比べると必要度が大幅に低いので止めました。

結局TD4EX4ではTD4と同じJMP命令とJNC命令だけを採用し、命令コードもTD4と同じ1111と1110にしました。