繁体   English   中英

C Bios/Real 模式下的编译器?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM