[英]C Compiler in Bios/Real Mode?
所以,我想编写一个操作系统。 引导加载程序是用汇编语言编写的。 现在我做了 Kernel 但可以将它写在 C 中吗? 我在 gcc -S 上试过,但我在 windows 上试过,输出文件是: .file "Kernel.c".text.ident "GCC: (MinGW.org Z32D8B233E3C58A262A0B7582729.9.D58)9.
“Watcom”编译器支持实模式代码。 您甚至可以将 select 8086 作为目标 CPU(但是,您也可以选择 80286 或 80386)。
编译器也支持分段代码。
不过至少老版本10.6只支持老的OMF object文件格式(后面的版本好像支持COFF,但是我怀疑分片代码是否支持COFF)。
这种 object 文件格式很难转换为可读性更好的文件格式。
如果您的 kernel 的大小小于 64K,您可以创建一个“DOS COM”文件(编译器支持)。
这是一个相当复杂的过程 - 但如果您可以访问 gnu-binutils,您可以使用 objcopy:
gcc -c -m16 -Os -ffreestanding -Wall -Wextra -fno-exceptions -o main.o main.c
ld -melf_i686 -static -nostdlib --nmagic -Ttext 0x1000 -o boot/kernel_entry.elf main.o
objcopy -Obinary boot/kernel_entry.elf kernel.bin
这应该是 output 一个可以使用 qemu 执行的二进制文件
如果你需要一个例子,那么你可以在这里找到一个带有 makefile 的很好的示例项目: https://github.com/cfenollosa/os-tutorial
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.