にCプログラムの変換:は、私はMIPSに次のC関数を変換する必要がありMIPS
int my_function(int x, int y)
{
int i,a;
a = x+y;
i = x-2;
a = a+i;
return a;
}
は、変数xとyが引数から渡されることを想定し、それぞれA0 $と$ A1を登録します。返される値はレジスタ$ v0に格納されます。この手順でスタックを使用する場合は、スタックを使用して他のレジスタを格納する必要があることに注意してください。
私はMIPSに新しいですので、私はC to MIPS online convertorを参照しようと、私はこの結果を得た:
my_function(int, int):
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-20], edi
mov DWORD PTR [rbp-24], esi
mov edx, DWORD PTR [rbp-20]
mov eax, DWORD PTR [rbp-24]
add eax, edx
mov DWORD PTR [rbp-4], eax
mov eax, DWORD PTR [rbp-20]
sub eax, 2
mov DWORD PTR [rbp-8], eax
mov eax, DWORD PTR [rbp-8]
add DWORD PTR [rbp-4], eax
mov eax, DWORD PTR [rbp-4]
pop rbp
ret
は、私は、このためのよりよい解決策を得ることができますか?
を* *よりよい解決策を定義してください。あなたは何を試しましたか? – Raptor
@Raptor:私は解決策について考えていません、私はオンラインコンパイルリンクを試しましたが、私は間違っていると思います。 だからこそ、私はより良い解決策を望んでいた。 – Shubham
@S Ringne:これは、コンパイルされた関数を呼び出す特定のオペレーティング環境、特に32または64ビットMIPSであるかどうか、また使用する呼び出し規約に依存する。単一の関数を孤立してコンパイルするのはむしろ面倒なことです。私は、あなたがコード化する必要があるものとそれがシステムにどのように統合されるべきかをより具体的に記述することによって、問題について多くのことを明らかにできると思います。 – doynax