CPU実験室

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

データ拡張

まず内部のレジスタ構成ですが32ビット長のものが6本あり、このうちA、B、Cレジスタはスタック構造をとっています

f:id:O3I:20211001191428j:plain

 

スタックトップにあるAレジスタに即値をロードするLDC命令を例にするとデータが4ビットで表現できる0~15(例えば#3)であれば、これは単純にLDC命令の機能コード#4とデータを合成してマシンコードは#43となります

ではそれ以上のデータをロードするには?となりますがこれはPFIXプリフィックス命令#2)を使い4ビットずつ左シフトしながらoperandレジスタに押し込んでいき最後の実行命令に付加された4ビットデータと合わせて評価されます

f:id:O3I:20211001191441j:plain

負数をロードするにはNFIX(ネガティブプリフィックス命令#6)を使用します。この命令は自身をビット反転してoperandレジスタの最上位ビットまで符号拡張します