30天自制操作系统
上QQ阅读APP看书,第一时间看更新

第6天 分割编译与中断处理

1 分割源文件(harib03a)

本来想接着详细讲解一下昨天剩下的程序,但一上来就说这些,有点乏味,所以还是先做点准备活动吧。不经意地看一下bootpack.c,发现它竟然已长达近300行,是太长了点。所以我们决定把它分割为几部分。

将源文件分割为几部分的利弊,大致如下。

优点

(1) 按照处理内容进行分类,如果分得好的话,将来进行修改时,容易找到地方。

(2) 如果Makefile写得好,只需要编译修改过的文件,就可以提高make的速度。

(3) 单个源文件都不长。多个小文件比一个大文件好处理。

(4) 看起来很酷(笑)。

缺点

(5) 源文件数量增加。

(6) 分类分得不好的话,修改时不容易找到地方。

■■■■■

我们先将源文件按下图分割一下看看。

分割并不是很难,但有一点很关键。比如如果graphic.c也想使用naskfunc.nas的函数,就必须要写上“void io_out8(int port, int data); ”这种函数声明。虽然这都已经写在bootpack.c里了,但编译器在编译graphic.c时,根本不知道有bootpack.c存在。

这样整理一下看起来就清爽多了。对应源文件的分割,我们还要修改Makefile,流程如下:

理解了这个流程,Makefile也就很容易看懂了。

现在再来“make run”。运行起来一点问题也没有,分割成功了。