操作系统入门(六) – 多汇编文件的整合
我们的带文件分配表的boot已经做好了,并且可以把kernel.img文件装入内存执行起来,但是在进入保护模式之前还有一些初始化的准备工组要做,那么就必须在kernel里面下文章了,可能有的人会说这个kernel应该只是一个loader而已,没错,不过随便吧。
由于东西可能很多,所以把它拆分成几个文件,方便管理,主文件只需要像调用子程序那样轻松就可以了。
要说明一下的是多个文件的情况下先把单个文件编译成obj文件然后用ld连接就可以了:
需要用到一个kernel.ld的文件
OUTPUT_FORMAT("binary")
ENTRY(start)
SECTIONS
{
.text 0x90000 : {
*(.text)
}
.data 0x90500 : {
*(.data)
}
.bss : {
*(.bss)
}
}
start 这个start是入口调用代表在kernel.asm里面的global start,要一致
.text 就是代码段起始地址的定义,这里是0x90000
.data 就是数据段起始地址的定义
0x90500 的地址只是按估计定的,随便改,但是改完了会影响kernel.img的大小
命令要这样用(可以做一个bat):
nasm -f aout ..\asm\kernel.asm -o ..\obj\kernel.o
nasm -f aout ..\asm\pnt.asm -o ..\obj\pnt.o
nasm -f aout ..\asm\readdisk.asm -o ..\obj\readdisk.o
ld -T kernel.ld -s –e start ..\obj\kernel.o ..\obj\pnt.o ..\obj\readdisk.o -o KERNEL.img
发表于 @ 2006年05月07日 01:57:00|评论(loading...)