1

让我先说我是 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不正确,有人介意解释最后一个参数是如何传递的吗?

4

0 回答 0