1. ホーム
  2. function

[解決済み】MIPSの関数(プロシージャ)について

2022-02-23 17:20:58

質問内容

MIPS言語初心者なのですが、MIPSアセンブリ言語の関数(プロシージャ)の仕組みがよくわかりません。以下は、私の問題を具体的に説明します。

  1. 何をするのか。

    • jal
    • jr
    • $ra

    ミップス言語での意味と重要なこと

  2. 関数や(プロシージャ)を作りたいとき、どのように使えばいいのでしょうか?

どのように解決するのですか?

まず最初に、以下のことを確認してください。 これ MIPSのクイックリファレンスです。本当に助かりました。

第二に、説明のために jal , jr$ra . 何 jal <label> にジャンプします。 label ラベルを格納し プログラムカウンタ (現在の命令のアドレスと考えてください)を $ra レジスタに登録します。これで label を使用して、最初にいた場所に移動します。 jr $ra .

以下はその例です。

.text
main:
li $t0, 1
jal procedure # call procedure
li $v0, 10
syscall

procedure:
li $t0, 3
jr $ra # return

これをSPIMエミュレータで実行すると $t0 に読み込まれるのは3であり、いわゆる プロシージャ .

お役に立てれば幸いです。