什么时候我们需要MIPS的$ v1?

时间:2013-10-06 01:20:42

标签: assembly mips return-value cpu-registers

我们都知道通常程序只返回一个值,但我注意到MIPS中有两个值返回寄存器$v0$v1。我看到的代码只有$v0但只有$v1,而且我还没有找到任何使用$v1的汇编语言示例代码。

有人能告诉我为什么我们在MIPS中有两个$ v寄存器,并向我展示一个何时可以使用它的例子?

3 个答案:

答案 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中设置错误代码。