2016-11-11 2 views
1

mips内の別の関数で関数の戻り値を使用するにはどうすればよいですか?私はスタックを使用しなければならないことは分かっていますが、どうやってどうやっていいのか分かりません私は以下のコードを持っている場合たとえばmips内のifステートメント内の関数の戻り値を使用する

は、:

int is_more_than_a_dozen(int a, int b) { 
    if (sum(a, b) > 12) 
    return 1; 
    else 
    return 0; 
} 
int sum(int a, int b) { 
    return a + b; 
} 

私はif文で関数sum()を呼び出すことを除いてすべてを行う方法を知っています。

これは私のsum関数である:

sum: 
    add $v0, $a0, $a1 
    jr $ra 
+1

戻り値は、慣例により$のv0' 'になります。このためにスタックは必要ありません。 – Jester

+0

私は$ v0と12を保持する一時的なvarを比較するためにちょうどbeqを使用する必要がありますか? @Jester – user3142443

答えて

2

あなたがスタックを使用する必要はありません

はあなたに


編集ありがとうございました。

関数sumを呼び出すには、レジスタ$a0$a1が必要ですが、必要な値はすでに2つのレジスタに入っています。したがって、関数を呼び出すだけで、パラメータはすでに正しい場所にあります。

関数を呼び出すにはjalを使用し、関数を呼び出すにはjrを使用します。 sltiを使用して戻り値を設定できます。

http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html

+0

参考リンクをありがとうございます。 SLTIを使うためには、$ sとimmが必要です(参考文献によると)。 immを12に設定した場合(liを使用)、$ sを$ v0に置き換えることはできますか? @ smac89 – user3142443

+1

@ user3142443はい、これはあなたがする必要があるものです – smac89

関連する問題