发信人: 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
 
  ---- 掬水月在手
 弄花香满身 | 
 
 
 |