让我通过说我是MIPS的新手来开头。
我试图撤消一些我使用Psy-Q为PSX编译的示例代码。我编译了一个小的“ hello world”程序,该程序恰巧包含C中的以下函数调用
int main() {
FntLoad(960, 256) // load the font from the BIOS into the framebuffer
}
我想函数调用的内容无关紧要,但这是上面带有这两个参数的那一行。
对于十六进制的函数调用,我的反汇编如下所示:
C0 03 04 24 E7 45 00 0C 00 01 05 24
在我的反汇编程序中,它看起来像以下3条指令:
TEXT:800103E4 li $a0, 0x3C0
TEXT:800103E8 jal FntLoad
TEXT:800103EC li $a1, 0x100
到目前为止,在所有示例中,所有函数参数都在jal
行之前加载,但是在我的反汇编中,加载立即发生在跳转后 。
这是正确的,还是这很奇怪?如果我了解jal
的错误,有人会介意解释如何传递最后一个参数吗?