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