CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

浮動小数点コード拡張

コードの拡張方法として、もう一種類のやり方があります。浮動小数点演算の一部の命令ですがOPコードをAレジスタに格納してFPENTRY浮動小数点入力命令:OPコード#AB)で実行するというセレクターシーケンスといわれるやり方です。さらにFPENTRY自体も1バイトOPコードなので、前回のPFIX命令とOPR命令に分解されることになります。

f:id:O3I:20211003204656j:plain

 

レジスタにセットされたコードが実行される。というのは汎用的に使えればトリッキーなプログラミングができそうです。ところが実際このセレクターシーケンスが適用できるのは浮動小数点演算命令の一部、以下の算術命令セットではMemory Codeが「s」と表示されているものだけで、なんか中途半端で統一的な美しさに欠けます。

f:id:O3I:20211004230818j:plain

 

思うに整数演算を含むCPU命令だけで1バイトコードはあらかた使ってしまって、後からFPUを内蔵した時にFPU命令にアサインするコードが足りなくなってしまったのかもしれません。

このように1つのインストラクションを複数の8ビット長コードに展開していく必要がありハンドアセンブルでは恐ろしく手間がかかるのは目に見えていて、何とかアセンブラを探してこなければなりません。