Позвольте мне предвосхитить это, сказав, что я новичок в 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
неверно, кто-то возражает объяснить, как передается последний аргумент?