我正在尝试在 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(例如没有值),则不使用这些寄存器的内容。
是否有可能返回值但我们只是不使用它,还是我理解错了?如果可能的话,我想对此进行更多解释。