QtSPIM MIPS Simulator: регистры a1 и a2 автоматически изменяются - PullRequest
1 голос
/ 29 января 2020

Имитатор QtSPIM MIPS автоматически устанавливает регистры a1 и a2 на следующие значения при выполнении первой строки любой программы на ассемблере:

R5  [a1] = 7ffff57c
R6  [a2] = 7ffff584

С чем это связано? Есть ли способ избежать этого?

1 Ответ

3 голосов
/ 29 января 2020

QtSPIM загружает короткую последовательность запуска, которая вызывает main. Эта последовательность запуска устанавливает argc и argv, так что main может иметь нормальную сигнатуру C: int main(int argc, char*argv[]);.

Когда вы запускаете QtSPIM, сначала загружается ядро. Файл обработчика исключений режима, который фактически включает эту последовательность запуска пользовательского режима. Вы должны заметить, что ваша ассемблерная программа загружена на 004000020 или около того, и код, начинающийся с 00400000 до 00400018, является запуском в пользовательском режиме.

См. Также этот ответ на QtSPIM: Объяснение для кода, отображаемого без загрузки программы , которая говорит с файлом обработчика исключений.


Чтобы избежать этого, загрузите / укажите свой собственный файл обработчика исключений (см. Ссылку выше), который пусто - или, по крайней мере, не имеет секции .text (только .ktext). Для go вы будете использовать сам обработчик исключений, но это ничего не даст, кроме вывода исключения.

...