CPU実験室

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

倍精度演算

NS32kは遅い、精度悪いではあんまりなので精度のほうは改善してみます。以下はNS32081の四則演算命令セットですがニーモニックが~Fの32bit単精度版と~Lの64bit倍精度版が用意されているので今のソースコード上で~Fをそっくり~Lに書き換えればいいはずです

f:id:O3I:20200514004108j:plain

ところが、これが全く動かないのです。64bit幅の倍精度浮動小数レジスタが8本あるつもりのコーディングですがNS32081のデータシートを見るとこれが大間違いでした。

 

実際には32bit幅の単精度浮動小数レジスタが8本あるだけなのです。64bit幅で使いたいときは2本のレジスタを連結しなければならないということです。

f:id:O3I:20200514004209j:plain

 

説明でも64bit幅レジスタは偶数番号(F0,F2,F4,F6)しか使えないとあります。今のコーディングではレジスタが足りなくなるのでメモリにいったん退避するように書き換えなければなりませんが、それでますます遅くなってしまうかもしれません

 

f:id:O3I:20200514004241j:plain