为操作系统添加32位保护模式时遭遇三重故障求助
操作系统GDT问题修复记录与参考
此问题已解决!我已更新bootloader和kernal代码(后续可能为kernal添加注释),供遇到相同问题的操作系统开发者参考。另外原OS名称POVESK因重名,已在bootloader中修改。以下是Nate Eldredge提供的修复代码说明。
此前遇到的问题
我在开发操作系统时,制作GDT(全局描述符表)遇到严重问题。kernal(个人习惯拼写为kernal)及bootloader代码存在异常,经调试大概率是三重故障。最初故障常出现在jmp dword 0x08:.afterstart行,但多次尝试修复后,故障随机出现在不同代码行。由于我在该领域经验不足,可能遗漏了明显问题,当时曾恳请社区提供解决方案。
构建与运行命令
Windows CMD(NASM编译)
nasm scr/boot.asm -f bin -o build/boot.binnasm scr/kernal.asm -f bin -o build/kernal.bin
WSL(镜像制作)
dd if=/dev/zero of=v_004.img bs=512 count=2880mkfs.fat -F 12 -n NBOS v_004.imgdd if=boot.bin of=v_004.img conv=notruncmcopy -i v_004.img kernal.bin ::kernal.bin
QEMU运行命令
qemu-system-x86_64 v_004.img
内容的提问来源于stack exchange,提问作者Bob Dude
相关产品推荐
相关产品推荐

