14

次の機能を備えた32ビットMIPS命令/オペコードのリストを見つけることができるWebサイトを知っている人はいますか?

  • 実際のオペコードとアセンブリ言語マクロ (疑似命令) を明確に区別
  • 特権レベルによる違いも含めて、命令の動作について説明します。
  • 命令が導入/改訂された命令セットのリビジョンを示します (例: MIPS I、MIPS II、MIPS32 など)。
  • syscall などの特権命令が含まれます。

私は、主に教育目的で、命令セットの「一部」を文書化した多数の Web サイトを知っています。浮動小数点命令や特権命令を省略したり、部分的にしか説明しない傾向があります。

ご参考までに、私は MIPS プロセッサ サブセットの Verilog コードを見て、それが実際の MIPS プロセッサの命令セットにどの程度準拠しているかを正確に把握しようとしています!

4

5 に答える 5

6

さて、私は何かを見つけました!

MIPSは、最新の標準化された命令セット(MIPS32v2)を参照する一連の「MIPS32リファレンスマニュアル」を提供しています

これらには、命令がどのバージョンで作成されたかに関する情報を除いて、ほぼすべてが含まれます:-(

ちょっと待って...

CornellのこのクラスのWebサイトには、同じマニュアルのように見えるものへのリンクが含まれていますが、実際には古いバージョンであり、その古いバージョンの第2巻には、最初に説明が導入された時期に関する情報が含まれています。ウーフー!

MIPSが改訂されたドキュメントからこの情報を削除するのはなぜですか?改訂履歴には説明がないようです。

于 2008-09-25T21:34:31.430 に答える
3

質問には部分的にしか答えられません。まだ参照していない場合は、Dominic Sweetman によるSee MIPS Runをお勧めします。私はこの本の初版を持っていますが、現在は第 2 版が最新版です。

  • 表 8.2 に、各オペコードと予想される動作をリストし、アセンブラー マクロを区別し、分解後の命令をリストします。残念ながら、ユーザー モードとカーネル モードは区別されません。
  • 表 8.6 は、LSI MiniRISC のようなあいまいなバリアントを含む、各命令が導入された ISA レベルを示しています。
  • syscall はテーブルに存在しますが、説明はあまりありません

初版ではカーネルについて言及しています。スーパーバイザー、およびユーザー特権レベルについて説明しますが、それぞれで許可される操作については説明しません。第 2 版でどのような変更が加えられたかはわかりません。

于 2008-09-25T21:04:52.440 に答える
3

命令の説明は含まれていませんが、GNU アセンブラのソースには、特定の CPU でどの命令が使用できるかについて、おそらく可能な限り詳細に記載されています。

binutilsを入手して opcodes/mips-*.c を見てください。

于 2008-09-25T21:15:21.510 に答える
1

最新の命令セット リファレンス マニュアルは、オンラインで無料で入手できます: MIPS® Architecture for Programmers Volume II-A: The MIPS32® Instruction Set Manual。そのリンクは Revision 6.06 December 15, 2016 です (つまり、MIPS32 Release 6を文書化しています)。

すべてのユーザーおよびスーパーバイザー/カーネル モード命令、およびすべての浮動小数点について、マシン コード エンコーディングを含む完全な詳細と、それらが何を行うかを示す操作セクションと共に説明します。MIPS32 リリース 6 で削除されたすべての命令が引き続き文書化されています。


最新バージョンについては、https://www.mips.com/products/architectures/mips32/を参照してください。mips.com には「クラシック コア」のセクションがありますが、それはまだ MIPS32 に遡るだけであり、歴史的なものではないようです。


balc(ブランチおよびリンク コンパクト: ブランチ遅延スロットがなく、GRP31 が暗黙の宛先であり、26 ビットを解放する)の「可用性と互換性」セクションのサンプルoffset<<2:

この命令は、リリース 6 で導入され、現在必須です。リリース 6 の命令は、リリース 6 よりBALC前の命令と同じエンコーディングを使用しSWC2ます。この命令は 、MIPS リリース 6 で主要なオペコードにSWC2移動されました。COP2

または for LDXC1 fd, index(base) (浮動小数点にインデックス付けされたダブルワードをロード)

この命令はリリース 6 で削除されました。MIPS64 リリース 1 以降の MIPS64 のすべてのバージョンで必要です。MIPS32 リリース 1 では使用できません。MIPS32 リリース 2 およびそれ以降のすべてのバージョンの MIPS32 で必要です。32 ビットまたは 64 ビット FPU であるかどうか、32 ビットまたは 64 ビット FP レジスタ モード (FIRF64=0 または 1、StatusFR=0 または 1) であるかどうかにかかわらず、必要な場合、FPU が存在する場合は常に必要です。


歴史的なものについては、cmu.edu Web ページでMIPS IV Instruction Set Revision 3.2 September, 1995を見つけました。命令がいつ導入されたかを一覧表示します。たとえば、MIPS I はdiv、MIPS III はdmultその他の 64 ビット命令、MIPS II はll/scです。


各命令の効果に関する擬似コードのクイック リファレンスは、 https://inst.eecs.berkeley.edu/~cs61c/resources/MIPS_help.htmlです。エンコーディングの詳細は含まれていませんが、プログラム カウンターに対する分岐およびジャンプ命令の影響を正確に説明しています。(これは少しトリッキーです: それらは分岐遅延スロットに対して相対的またはセクション絶対的です。)

ただし、MIPS I 整数命令の場合でも完全ではありません。MIPS I に存在していた非整列ロード ヘルパー命令 LWL と LWR および対応する SWL/R ストアがありません。また、FP のものや、それ以降の MIPS 命令も含まれていません。のようにmul(のみmult)。他に何が欠けているのかわかりません。完全なリストに対して相互参照しませんでした。

上記にリンクされている MIPS-IV マニュアルは、 lwl/lwrが MIPS I で利用可能であることを確認しています (また、ロード遅延スロット制限がそれらに適用されることを文書化しています)。

于 2017-11-22T10:43:26.237 に答える
0

このWeb サイト (archive.org) では、ほとんどの MIPS 命令セットとそのエンコードについて説明しています。ただし、完全ではありません。少なくともnor、おそらく他のものが欠けています。

各命令の効果に関する擬似コードのクイック リファレンスは、https://inst.eecs.berkeley.edu/~cs61c/resources/MIPS_help.htmlです。エンコーディングの詳細は含まれません。

MIPSのWeb サイトには、さまざまなコアに関する技術文書もあります。
たとえば、MIPS 4KE コア (ドキュメント #MD00103) のマニュアル「MIPS32® 4KE™ プロセッサ コア ファミリ ソフトウェア ユーザーズ マニュアル」をダウンロードしましたが、第 10 章には命令セットの詳細な説明が含まれています。ドキュメントにアクセスするには、登録する必要があることに注意してください。

于 2008-09-25T21:23:20.337 に答える