为什么此加载指令在跳转后出现?

时间:2018-12-11 00:03:34

标签: mips playstation

让我通过说我是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的错误,有人会介意解释如何传递最后一个参数吗?

0 个答案:

没有答案