Почему эта инструкция загрузки приходит после прыжка? - PullRequest
0 голосов
/ 11 декабря 2018

Позвольте мне предвосхитить это, сказав, что я новичок в MIPS.

Я пытаюсь изменить пример кода, который я скомпилировал для PSX, используя Psy-Q.Я скомпилировал небольшую программу «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 неверно, кто-то возражает объяснить, как передается последний аргумент?

...