Обновление структуры лаб

This commit is contained in:
Andrei Solodovnikov
2023-09-10 20:56:25 +03:00
parent edb6b5a7d0
commit 182a848b43
21 changed files with 58 additions and 222 deletions

View File

@@ -0,0 +1,28 @@
.section .boot
.global _start
_start:
la gp, _gbl_ptr # Инициализация глобального указателя
la sp, _stack_ptr # Инициализация указателя на стек
# Инициализация (зануление) сегмента bss
la t0, _bss_start
la t1, _bss_end
_bss_init_loop:
beq t0, t1, _main_call
sw zero, 0(t0)
addi t0, t0, 4
j _bss_init_loop
# Вызов функции main
_main_call:
li a0, 0 # Передача аргументов argc и argv в main. Формально, argc должен
li a1, 0 # быть больше нуля, а argv должен указывать на массив строк,
# нулевой элемент которого является именем исполняемого файла,
# Но для простоты реализации оба аргумента всего лишь обнулены.
# Это сделано для детерминированного поведения программы в случае,
# если будет пытаться использовать эти аргументы.
call main
# Зацикливание после выхода из функции main
_endless_loop:
j _endless_loop