Почему эта инструкция загрузки приходит после прыжка?

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

0 ответов

Другие вопросы по тегам