peredOS/boot/boot.asm

26 lines
957 B
NASM

; Настройки Multiboot
MULTIBOOT_MAGIC equ 0x1BADB002
MULTIBOOT_FLAGS equ 0x00
MULTIBOOT_CHECKSUM equ -(MULTIBOOT_MAGIC + MULTIBOOT_FLAGS)
section .multiboot
align 4
dd MULTIBOOT_MAGIC
dd MULTIBOOT_FLAGS
dd MULTIBOOT_CHECKSUM
section .text
global _start
extern kernel_main ; Наша функция из Си-файла
_start:
mov esp, stack_space ; Выделяем указатель на стек
; Передаем параметры от GRUB в Си-код по стандарту cdecl
push ebx ; Аргумент 2: Адрес структуры Multiboot
push eax ; Аргумент 1: Магическое число Multiboot
call kernel_main ; Прыгаем в Си!
jmp $ ; Если Си-функция вернется — виснем в вечном цикле
section .bss
resb 8192 ; 8 КБ под стек
stack_space: