kmain和dmain之间有什么区别,有什么区别 - C中的主要功能是什么?

时间:2012-03-02 08:46:38

标签: c kernel

正如标题所说,它们是什么,有什么区别?

一些例子:

dmain

void dmain(void* mbd, unsigned int magic)

kmain

void kmain( void* mbd, unsigned int magic )

P.S。我在这里发现了类似的帖子,但它是关于wmain

What is the difference between wmain and main?

另外_tmain

What is the difference between _tmain() and main() in C++?

__

他们采取相同的论点,但有区别吗?任何链接到一些信息,所以我可以学习赞赏,谷歌产生了奇怪的结果......

此外,还有官方类似C的“男人”页面吗?

1 个答案:

答案 0 :(得分:1)

您似乎指的是this tutorial on OSDev.org

如果您注意到,这是而不是标准C程序,其中main()为其入口点。实际上,该页面显示了两个入口点:一个用汇编程序写入,以便GRUB找到&负载,以及设置&加载第二个kmain(),用C语言编写。编写者使用名称kmain表示“内核主”;大概是dmain是司机的入口点。将代表“司机主”。

C区分“独立”和“托管”实现。托管是你可能更熟悉的东西;标准C库可用,所有程序都从main函数开始。

OS内核(通常)是独立环境的好例子。例如,C库可能可用(除了stddef.hstdarg.h之类的某些标题;有关详细信息,请参阅标准)。此外,入口点不再由标准定义。 OSDev.org教程通过使用不同的名称明确定义其入口点,特别指出了这一事实。

您可以运行教程将kmain重命名为main,但请注意它仍然是void main(void*, unsigned int)不是 int main(int, char**);事实上,这种混淆可能是作家选择使用不同名称的部分原因。但这只是他们选择的惯例,而不是任何标准化的。