Я очень новичок в разработке ОС
Итак, вот мой загрузчик.
boot.asm
[org 0x7c00]
mov si, STR
call printf
jmp $
printf:
pusha
str_loop:
mov al, [si]
cmp al, 0
jmp print_char
popa
ret
print_char:
mov ah, 0x0e
int 0x10
add si, 1
jmp str_loop
STR: db 'Hello World', 0
times 510-($-$$) db 0
dw 0xaa55
Предположим, я хочу использовать этот C код:
void main (void)
{
unsigned char* vga = (unsigned char*) 0xb8000;
vga[0] = 'X';
vga[1] = 0x09;
for(;;);
}
Как видите, я Я печатаю Hello World, используя сборку. Но я хочу использовать C для сборки ядра и прочего. Как я могу вызвать ядро, написанное в C из моего кода?
Еще один глупый вопрос: Я использую QEMU для тестирования кодов. Когда у меня есть только один файл (например: boot.bin), я могу запустить его следующим образом: qemu-system-x86_64 boot.bin
из командной строки. Но когда я свяжу ядро, написанное в c (например: kernel. c), как я буду их запускать?
Я искал много видео и статей, но не нашел ответа
Заранее спасибо!