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

fud*_*din 6 assembly arguments mips

我是汇编语言的新手.我正在阅读关于MIPS架构的文章,我坚持一个概念.

MIPS有四个参数寄存器$ a0,$ a1,$ a2和$ a3.这些专用寄存器用于保存从调用者过程传递给被调用者过程的参数.

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

use*_*653 5

它们被传递到堆栈,引自维基百科:

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

更多这里这里(PDF警告).