我有下面的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