我们都知道通常程序只返回一个值,但我注意到MIPS中有两个值返回寄存器$v0
和$v1
。我看到的代码只有$v0
但只有$v1
,而且我还没有找到任何使用$v1
的汇编语言示例代码。
有人能告诉我为什么我们在MIPS中有两个$ v寄存器,并向我展示一个何时可以使用它的例子?
答案 0 :(得分:2)
另一个用例是在32位MIPS(或64位MIPS中的128位数字)上返回64位数字。
答案 1 :(得分:2)
有很多用途。除了函数返回像int64_t add64(int a, int b)
这样的64位数字,如@Martin Rosenau所提到的,它可能会在许多其他情况下使用。一个例子是在函数中返回2个元素的结构,如
typedef struct {
int a, b;
} ret_struct;
ret_struct do_something(int x, int y);
或返回以某些语言出现的元组的函数
def func(x,y):
# code to compute x and y
return x,y
a, b = 1, 2
u, v = func(a, b)
它类似于x86中的对(E / R)DX:(E / R)AX,返回的值是寄存器大小的两倍
答案 2 :(得分:1)
我可以想到很多例子,但这可能取决于你的判断力。最好的例子可能是一个返回$ v0值的函数,可能会在$ v1中设置错误代码。