私は大学で来年に行う必要があるため、MIPSについてあまりよく分かりませんが、今年はlexとyaccと私たちはMIPSを知る必要があります。私は数時間前に何かを学んだだけですが、たとえば「a = -2」と「b = -a」がある場合、「a = -2」の場合、addi $ 1、$ 0 、-2 '、' b = -a 'の場合はmove $ 2、$ 31'というようなものがあります。私はここまで理解しましたが、何かを知りたいです。 $ 31は 'b'が格納されるレジスタですか?はいの場合、その登録簿では特別なものは何ですか?なぜ30ドルで保管することができないのですか、たとえば29ドルですか?それは$ 31が最後の登録者なのですから?
答えて
登録の割り当ては、次の2つの変数を持っている場合は、http://www.cs.uwm.edu/classes/cs315/Bacon/Lecture/HTML/ch05s03.html
だから、ABI MIPSの対象に、コンパイラの割り当て方式に基づいています目的。レジスタ$31
別名$ra
がリターンアドレスレジスタです。 $ra
はjal
命令にハードワイヤードされているため、データ値を保持するのは良い選択ではありません。
$0
別名$zero
はゼロの値にハードワイヤードされています。他のレジスタはどのような目的でも使用できますが、ほとんどのコンパイラやほとんどのプログラムは、ABIのレジスタ使用規則に準拠しています。
したがって、$1
aka $at
は「アセンブラの一時的な」です。これは、mipsが等しい/不等(例えば、beq/bne
)のための条件分岐命令しか有しておらず、(例えばblt
)を持たないために使用される。だから、それは一般的に、あなたの順序のために$at
レジスタ
で出力レジスタを、取るslt
命令を持っています
a = -2;
b = -a;
のはa
が$t1
に割り当てられている$t0
とb
が割り当てられていると仮定しよう。生成されたシーケンスは次のようになります。また
addi $t0,$zero,-2 # a = -2
sub $t1,$zero,$t0 # b = -a
、そしてここに私の答えを参照してください、$ra
で行うことができないことができるものの詳細については:Whether $ra register callee saved or caller saved in mips?
MIPSの$ 31レジスタはリターンアドレスレジスタです。呼び出し関数によって保存されます。保存後に使用できます。
しかし、それに対してチェックはありません。他の汎用レジスタと同様に、lw命令で使用できます。 a
とb
、コンパイラが与えられたために利用可能である任意のレジスタに割り当てることができます。
- 1. mipsプログラムはmips/mflo/swを理解できません
- 2. このOpenGLプログラムがレンダリングされない理由を理解できません
- 3. キャンバスが編集されない理由を理解できません
- 4. angularJSモジュールがロードされない理由を理解できません
- 5. エラーメッセージ "引数が十分にインスタンス化されていません"が理解できない理由を理解できません
- 6. UISegmentedControlがnilを返している理由を理解できません
- 7. インデントエラーですが、理由を理解できません。
- 8. 私のドッカー画像が保存されていない理由を理解できない
- 9. PHPセッション変数がページリダイレクトで上書きされている理由を理解できません
- 10. ユーザー名とパスワードが設定されていない理由を理解できません
- 11. createDataFrame()が失敗した理由を理解できません
- 12. MIPS理由
- 13. 私のPHPがMySQL DBに挿入されていない理由を理解できません
- 14. 何らかの理由でデータがSQLiteデータベースに保存されていませんか?エラー
- 15. JOGLは描画された線が表示されない理由を理解できません
- 16. 私のコンピュータにクラウドコードが保存されている理由
- 17. 「シンボルを解決できません」というエラーが表示される理由がわかりません
- 18. NullReferenceException - 初期化されたオブジェクトがnullにリセットされる理由を理解できません。
- 19. 保存はこれが保存されていない理由を把握することはできませんコントローラ
- 20. 私のコードが実行されていない理由を理解できません
- 21. は、これが行とセルを表に追加しない理由を理解できません
- 22. エラーや送信時にポップアップが消えて再び表示される理由を理解できません
- 23. Pythonの出力の理由を理解できません
- 24. 出力理由を理解できません
- 25. javascriptがphpファイルで動作しない理由を理解できません
- 26. 入力がMobXを使用して更新されない理由を理解できません
- 27. 宣言してもテンプレートの一致が捕捉されない理由を理解できません
- 28. 私のカルーセルが動作しない理由を理解できません(ブートストラップ)
- 29. アクティビティを開始できませんComponentInfo android.view.InflateException:バイナリXMLファイル行#31
- 30. jsが動作しない理由を理解できません
ありがとうございました、私が理解しました! – Linksx