Как я могу вызвать ядро, написанное в c, из моего загрузчика - PullRequest
0 голосов
/ 19 июня 2020

Я очень новичок в разработке ОС
Итак, вот мой загрузчик.

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), как я буду их запускать?

Я искал много видео и статей, но не нашел ответа
Заранее спасибо!

...