0

我正在尝试在 y86 (Assembly) 中编写以下函数

C代码:

void f (long x, long y, long *sum, long *diff) {
    *sum = x + y;
}
long a, b;
void main (void)
{
    f (7, 10, &a, &b);
    halt();
}

不要给我如何在汇编中写这个的答案,我只想回答我的两个问题:

问题1:我们如何将引用作为参数传递?

问题 2:我们如何返回一个 void 值?

旁注:

我查过这篇文章,但答案push [edi];不适用于 y86。

通常,在一个有返回值的函数中,我们使用:ret来返回%eax寄存器中的内容,并删除堆栈中的返回地址。现在我只想删除返回地址而不实际返回值。根据这个网站

如果您的函数返回 void(例如没有值),则不使用这些寄存器的内容。

是否有可能返回值但我们只是不使用它,还是我理解错了?如果可能的话,我想对此进行更多解释。

4

0 回答 0