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