精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>嵌入式开发>>操作系统设计与实现>>参考资料:为什么要苛求编译器

主题:参考资料:为什么要苛求编译器
发信人: wenbobo()
整理人: wenbobo(2003-01-09 10:08:30), 站内信件
★原文转载自Embed版wenbobo的《Re:参考资料:DJGPP简介(云风工作室)》★
DJGPP几乎是单纯为了DOS下的32位保护模式编程准备的,有些局限性,但为了编译出符合要求的代码,我们可以选择的不多。

bc/vc/gcc(linux)等常用编译器都不能方便的输出简单格式的实模式代码,这是非常糟糕的事情。

起初,BIOS把控制权交给了MBR,然后MBR又交给了分区的Boot Sector,这时Boot Sector会面临一个棘手的局面:

1、Boot Sector最多只能有四百多字节的代码。虽说扇区共512字节,但这里面还得为本分区的文件系统基本信息表格留出空间。

2、Boot Sector要能够从本分区的文件系统中查找、读出内核加载程序。但是……此时文件系统还没有加载,Boot Sector必须自己用INT 13H来处理所有的细节。

3、内核加载程序复杂程度肯定很大,用汇编实现会比较痛苦,一般都希望用C/C++编写。但C/C++编译器的输出格式一般是可执行文件……那么,Boot Sector还必须能够识别可执行文件的格式,并正确的装载!

所以,我们一般都会想尽一切办法,把内核加载程序编译为尽量简单的格式,比如flat(也就是没有任何格式),或者.COM


----
掬水月在手
弄花香满身

[关闭][返回]