Files
APS/Labs/13. Programming/startup.S
2023-09-10 21:09:13 +03:00

29 lines
1.3 KiB
ArmAsm
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.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