bit拡張と数値演算 この記事はひとりでCPUとエミュレータとコンパイラを作る Advent Calendar 2017の6日目の記事です。 昨日は変数(レジスタ)の数を4個に増やして、mov命令が実行できるCPUを設計した。 しかしmov命令だけでは大したことができない。 そこで今日は(浮動小数点を含む)四則演算ができるように回路を拡張する。 bit拡張 昨日はレジスタの種類を増やしたが、各レジスタの桁数は1bitのままだった。 2進数1桁の変数では計算もへったくれもない1ので、まずはbitを拡張しよう。 拡張方法は極めて簡単。 例えばmov a, bを考えると、aの1の位はbの1の位で上書きされ、10の位は10の位で上書きされる。 つまりmov命令は各桁毎に独立に実行される。 これを実現するには、昨日の回路と全く同じものを並べればいい。 当然だが、マルチプレクサに入る線Sx, Syは各