我正在学习操作系统概念。我在ASM中创建了一个简单的引导加载程序,在C中创建了一个循环内核文件。我将它们编译成两个并且它可以工作。
现在我需要使用内核打印一些文本,这是在C中。我了解到在开发OS时,必须省略标准库函数的使用。那么我该如何创建自己的库呢?我的意思是在不包含任何标准头文件的情况下将文本打印到屏幕。我怎样才能做到这一点?我应该使用内联汇编还是其他任何方法?
如此简单,我的问题是,如果没有标准库,C语言如何与硬件交互?
答案 0 :(得分:2)
我在15年前做同样的事情:),你被迫使用自己的内核函数,基于HAL概念(硬件抽象层)。您构建了一个基于HAL的模块,例如,一个屏幕输出驱动程序。这个驱动程序应该有两个方面:与您自己的自定义操作系统联系的一方,以及与您的特定硬件接触的一方。因此,如果在任何特定时刻更改硬件,那么您的操作系统不会受到此更改的影响。这称为(正式):接口。是一个软件模式的概念。 好看。是一个非常有趣的项目:)
作为伪代码示例:
w(t)
因此,您的内核文件将如下所示:
// yourclientprogram.c
include "screendriver.h"
i = new instance of LCDScreenDriver;
i.selectScreen(0);
i.printf("%s","hello");