MIPS 中如何处理五个或更多参数?

发布于 2024-11-27 23:05:33 字数 272 浏览 2 评论 0原文

我对汇编语言非常陌生。我正在阅读有关 MIPS 架构的内容,但我被一个概念所困扰。

MIPS 有四个参数寄存器 $a0、$a1、$a2 和 $a3。这些特殊的 目的寄存器用于保存从 调用者过程到被调用者过程。

如果函数有超过 4 个参数,因为只有四个寄存器来保存参数,会发生什么情况? 提前致谢。

I am very new to Assembly language. I was reading about MIPS architecture and I am stuck with a concept.

MIPS has four argument registers $a0, $a1, $a2 and $a3. These special
purpose registers are used to hold the parameters passed from the
caller procedure to the callee procedure.

What would happen if the function has more than 4 arguments as there are only four registers to hold the arguments?
Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

给妤﹃绝世温柔 2024-12-04 23:05:33

它们在堆栈上传递,引用自 Wikipedia

MIPS 定义的 O32 ABI 将前四个参数传递给寄存器 $a0-$a3 中的函数;后续参数在堆栈上传递。返回值(或指向它的指针)存储在寄存器$v0中;第二个返回值可以存储在 $v1 中。 64 位 ABI 允许在寄存器中使用更多参数,以便在参数超过四个时实现更高效的函数调用。还有 N32 ABI,它也允许在寄存器中使用更多参数。

更多此处此处(PDF 警告)。

They are passed on the stack, quoting from Wikipedia:

The O32 ABI defined by the MIPS passes the first four arguments to a function in the registers $a0-$a3; subsequent arguments are passed on the stack. The return value (or a pointer to it) is stored in register $v0; a second return value may be stored in $v1. The 64 bit ABI allows for more arguments in registers for more efficient function calls when there are more than four parameters. There is also the N32 ABI which also allows for more arguments in registers.

More here and here (PDF warning).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文