やっとこさ、全ての命令のデコードテーブルを書き終えた。 全ての命令406種類のテーブルを作成。これにはsingle,doubleの各種タイプも含んでいる。
ただし、これはMIPS64アーキテクチャリファレンスに載っている命令を全て羅列したので、実際にはMIPS64R6では使えない命令も含まれている。例えば、.ps命令がそうだ。
そもそも.PS命令とは何なのか?
MIPS64r6アーキテクチャリファレンスによれば、以下のような説明がなされている。
.PS subtracts the upper and lower halves of FPR fs and FPR ft independently, and ORs together any generated exceptional conditions.
つまり、64ビットのレジスタを上下32ビットに分け、独立して演算をする命令ということだ。これは、2-way SIMD命令ということか。 ただし、これらの命令はMIPS64r6では全てobsoluteされている。これはやはり、SIMDの専用命令をもっているからかな? (MSA)
というか、そもそもMIPSの浮動小数点命令にはいくつかのタイプがあり、それらが"演算種類.タイプ"で分類されているようだ。
(下記はMIPS64アーキテクチャリファレンスより抜粋)
とりあえずはこれでデコードテーブルは完成したため、次は中身の実装に移ろう。
400命令越えか。。。気が思いな。。。