J'ai fait un petit bootloader. Maintenant, je veux charger le noyau C++. Puis-je utiliser mon petit bootloader pour ça?Il est possible d'appeler le noyau avec ce bootloader ASM? Comment?
[BITS 16]
[ORG 0x7C00]
[extern _start_kernel]
MOV SI, LoadString
CALL String
CALL _start_kernel
JMP $
Print:
MOV AH, 0x0E
MOV BH, 0x00
MOV BL, 0x07
INT 0x10
RET
String:
characters:
MOV AL, [SI]
INC SI
OR AL, AL
JZ stopPrint
CALL Print
JMP characters
stopPrint
RET
LoadString db 'Loading...', 0
TIMES 510 - ($ - $$) db 0
DW 0xAA55
C'est bootloader très simple et cela est la première fois que je fais bootloader (avec tutoriel). J'utilise NASM dans Windows pour compiler le code asm.
Pas réel de répondre à cette question, car il est très vague. Ecrivez plus concret ce que vous voulez faire ... Maintenant, vous pouvez obtenir seulement réponse "Oui" ou "Non" sur votre question actuelle et c'est très vague aussi :) D'où voulez-vous charger votre noyau? périphérique brut? type fs? avez-vous préparé la place pour cela? bss/tas? Et etc ... En fait, votre question soulève plus de questions – 0xAX
Parmi les autres questions soulevées, quel compilateur C++ utilisez-vous? Génère-t-il du code 16 bits? Si ce n'est pas le cas, votre bootloader devra également se préoccuper de mettre le processeur en mode protégé 32 bits avant même d'essayer d'exécuter du code 32 bits. Vous pourriez avoir un temps plus facile si vous utilisez un chargeur de démarrage compatible Multiboot tel que _GRUB_ qui gère ce genre de corvée pour vous. –
Avez-vous un fichier 'linker.ld'? Vous devez lier le code Assembly avec votre chargeur de démarrage, sinon vous ne pouvez pas appeler de fonctions dans votre fichier noyau. – Razor