私はC言語のコードをMIPSアセンブリに変換することを含むクラスのプロジェクトを進めています。私はこのコード変換する問題を抱えています:アクセス番号の人は別のレジスタに格納されています
r[extract(ir,15,11)] = aluout;
は基本的には、rは[]それはextract
関数からの結果に基づいて、アクセスに登録するかを決定、あなたが見ることができるようにC.内のレジスタを表す配列です。 MIPSにこれのようなものはありますか?私がそれをすると考えることができる唯一の方法は、私が抽出サブルーチンから戻ってすべてのレジスタ番号に対してチェックするという価値を取ることです。これのC表現は次のようになります:
regNum = extract(ir, 15, 11);
if (regNum == 1) {
r[1] = aluout;
} else if (regNum == 2) {
r[2] = aluout;
} else if (regNum == 3) {
r[3] = aluout;
} ...
アイデアはありますか?これが唯一の方法ですか?
あなたは配列をインデックスできます。しかし、生のレジスタをインデックスすることはできません。 – Jester
ええ、私は知っています。 Cコードは私たちの教授が私たちにMIPSに翻訳しなければならないものを与えたものです。あなたがMIPS – wKavey
に翻訳していたならば、r [index]はレジスタ$ [index]を表しているだけなので、(MIPS?)CPUをエミュレートするはずのMIPSアセンブリプログラムを書いています。私はちょうどあなたがCと同じように配列にエミュレートされたレジスタを保持したいと思うでしょう。あなたのプログラムで何かのためにいくつかの実際のレジスタが必要になるので、エミュレートされたすべてのレジスタを実レジスタに保持できません。 –