1

コンパイルしたアセンブリファイルをSPIMで動作させるのに多くの問題があります。基本的には、c ++ファイルを作成してから、エラーなしでSPIMで開くことができる.sファイルを生成します。これは、アセンブリがMIPS I命令(一部のMIPS II)を使用してMIPS32ABIにある必要があることを意味します。どうすればよいですか?現在、g ++を使用していますが、SPIMでファイルを実行しようとすると、大きなエラーが発生します。私はMACOSx10.6.3で作業しており、Linuxマシンでリモートでコンパイルしています。これを簡単にするために使用できる特別なコンパイラはありますか?

4

1 に答える 1

2

コンパイラに-Sオプションを指定すると、アセンブリコードが生成されます。次に、SPIMがコードを受け入れるようにコードを編集する必要があります。

また、コードのような、またはより読みやすいコードのg++ -S -fno-delayed-branch最適化を有効にするかどうかも必要になります。通常、SPIMは分岐遅延スロットのないMIPSをシミュレートするように構成されていますが、gccは、分岐が実行された後の命令が実行された場合でも、それを想定します。 gccを取得して、ブランチ遅延スロットを。で埋めます。-O1-Og-fno-delayed-branchnop

もう1つの便利なオプションは-fverbose-asm、各オペランドのC変数名を使用してgccにコメントを追加さ​​せることです。

std::vectorこれらの機能が本当に必要な場合を除いて、特に最適化を行わずに、ローカル配列と比較して多くの余分なコードにコンパイルされるようなC++ライブラリの使用は避けたいと思うでしょう。

于 2010-07-12T20:06:34.970 に答える