墨羽的专栏

OSDIY - 操作系统入门

原创 操作系统入门(六) – 多汇编文件的整合收藏

操作系统入门(六) – 多汇编文件的整合
       我们的带文件分配表的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...)

新一篇: 操作系统入门(六) - kernel.asm | 旧一篇: 介绍大家学英语的好方法

用户操作
[即时聊天] [发私信] [加为好友]
flyback
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
flyback的公告
Google
文章分类
收藏
    奇文供赏
    e-ink 将为世界带来巨大的变革
    我们为什么缺少优秀的程序员?
    存档
    软件项目交易
    Csdn Blog version 3.1a
    Copyright © flyback