至此,操作系统基本框架已经完成,后本章主要包含了原书第29和30天的内容,后面就是一些修修补补的工作,主要是增加了几个有用的应用程序,由于有些应用程序篇幅比较长,这边就不一一列举了,有兴趣的可以自行看书。
一 兼容标准函数
C语言当中有一些标准函数,诸如printf、putchar、strcmp、malloc等。如果将他们封装好的话,那么可以用在windows或则linux上面的应用程序就可以移植过来了,非常的方便。
其实主要就是利用之前写好的API进行封装,例如putchar、exit:
#include "apilib.h"
int putchar(int c)
{
api_putchar(c);
return c;
}
void exit(int status)
{
api_end();
}
再列举一个printf标准函数:
#include <stdio.h>
#include <stdarg.h> // 包含了这个头才能用va_list来获取...中传递的参数
#include "apilib.h"
int printf(char *format, ...) {
va_list ap;
char s[1000];
int i;
va_start(ap, format); // 将 ... 参数和 format 绑定
i = vsprintf(s, format, ap); // 将 ... 以 format 格式写入 s 中
api_putstr0(s); // 利用之前既有的api打印函数
va_end(ap); // 有start就有end
return i;
}
二 一些应用程序
本书到这边增加了不少应用程序,包括:创建非矩形窗口、一个画线的程序、防御外星人游戏、命令行计算器、文本阅览器、MML播放器、图片阅览器等。这边不一一列举。
最后针对IPL做了一些改良,用9个柱面完成了之前10个柱面的事情,加快了操作系统的引导速度(关于IPL的具体描述参考之前的【操作系统】30天自制操作系统--(2)导入C语言)。
三 总结
至此,这个操作系统已经基本完成了。回顾一下从第一天到现在,作者用尽量通俗易懂的描述和尽量简洁明了的程序,向我们传递出不少的知识,我自己也从中间学到了不少东西,不过要将所学的东西融会贯通,还需要学而时习之,继续加油吧~