操作系统入门(六) – 多汇编文件的整合
我们的带文件分配表的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
本文介绍如何将多个汇编文件整合为一个可执行内核镜像。通过使用nasm和ld工具,作者展示了如何组织代码结构,设置段地址,并生成最终的KERNEL.img文件。
1316

被折叠的 条评论
为什么被折叠?



