Я нашел образец простого загрузчика ядра и попытался понять, как он работает. Но я даже не могу собрать его из-за ошибок:
loader.s:5:20: error: unexpected token in '.section' directive
.section .multiboot
^
loader.s:11:15: error: unexpected token in '.section' directive
.section .text
^
loader.s:28:1: error: unknown directive
.sectio .bss
Вот код загрузчика:
.set MAGIC, 0x1badb002
.set FLAGS, (1<<0 | 1<<1)
.set CHECKSUM, -(MAGIC + FLAGS)
.section .multiboot
.long MAGIC
.long FLAGS
.long CHECKSUM
.section .text
.extern main
.extern callConstructors
.global loader
loader:
mov $kernel_stack, %esp
call callConstructors
push %eax
push %ebx
call main
_stop:
cli
hlt
jmp _stop
.sectio .bss
.space 2*1024*1024;
kernel_stack:
Я компилирую его как as -m32 loader.s
.
После поиск Я обнаружил, что мне не нужно использовать .section
с .text
и .bss
, но я не знаю, что такое раздел .multiboot
и как исправить эту ошибку. Я не смог найти информацию о .multiboot
в Google.
PS Если это важно, я использую MacOS.