QtSPIM загружает короткую последовательность запуска, которая вызывает main
. Эта последовательность запуска устанавливает argc
и argv
, так что main
может иметь нормальную сигнатуру C: int main(int argc, char*argv[]);
.
Когда вы запускаете QtSPIM, сначала загружается ядро. Файл обработчика исключений режима, который фактически включает эту последовательность запуска пользовательского режима. Вы должны заметить, что ваша ассемблерная программа загружена на 004000020
или около того, и код, начинающийся с 00400000
до 00400018
, является запуском в пользовательском режиме.
См. Также этот ответ на QtSPIM: Объяснение для кода, отображаемого без загрузки программы , которая говорит с файлом обработчика исключений.
Чтобы избежать этого, загрузите / укажите свой собственный файл обработчика исключений (см. Ссылку выше), который пусто - или, по крайней мере, не имеет секции .text
(только .ktext
). Для go вы будете использовать сам обработчик исключений, но это ничего не даст, кроме вывода исключения.