Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 关于编写操作系统的问题_C++_C_Assembly_Operating System_Real Mode - Fatal编程技术网

C++ 关于编写操作系统的问题

C++ 关于编写操作系统的问题,c++,c,assembly,operating-system,real-mode,C++,C,Assembly,Operating System,Real Mode,关于编写操作系统,我有一些非常具体的问题,我希望能够得到回答: 如果我使用GRUB作为引导加载程序,我需要编写多少汇编代码来加载一个最小的C内核 我的内核将用C编写,它将加载一个我在C++中编写的命令行shell,它不做任何API调用只调用标准库调用,我需要重写整个C++标准库来做吗?< /p> 在C++中,我可以编写视频、键盘和软盘驱动程序吗? GCC和G++是否输出16位实模式代码 我可以在Windows上使用Mingw写这些吗?还是必须在Linux上写 我是否需要处于实模式才能直接写入视

关于编写操作系统,我有一些非常具体的问题,我希望能够得到回答:

  • 如果我使用GRUB作为引导加载程序,我需要编写多少汇编代码来加载一个最小的C内核

  • <>我的内核将用C编写,它将加载一个我在C++中编写的命令行shell,它不做任何API调用只调用标准库调用,我需要重写整个C++标准库来做吗?< /p> 在C++中,我可以编写视频、键盘和软盘驱动程序吗?
  • GCC和G++是否输出16位实模式代码

  • 我可以在Windows上使用Mingw写这些吗?还是必须在Linux上写

  • 我是否需要处于实模式才能直接写入视频存储器


  • 如果有人能回答我的问题,我将非常感谢

    1:您只需要少量的程序集就可以处理引导过程并加载C代码。我想应该不会超过20-30行

    2-4:我还没有真正用C++来处理OS DEV,但我想我记得读过它需要更多的工作才能让它运行在某个地方。对不起,我帮不上什么忙了

    5:你可以用MinGW来做,但根据我的经验,这会使事情复杂化。我永远无法真正让Windows环境工作,但我也放弃了,没有太多的努力

    编辑:这里有一个指向一些示例程序集的链接。这是我曾经使用过的全部:


    如果你对这类东西感兴趣的话,该网站的其余部分也是一个很好的教程。

    哇!整个操作系统?看来我们在这里谈论的是几年的努力!有你所有问题的答案。@Matt我不同意。linux发行版比启动和运行一个普通内核所需的复杂多了几个数量级。就个人而言,看一下Linux 0.1的源代码会更有帮助(这方面的历史课也不错)。即使他没有直接修改Linux发行版/Linux内核,编写一个非常简单的操作系统仍然是一个很好的学习体验,即使它很烂。@AlokSave:我们在六个月内作为一个大学项目实现了一个,在说这些(令人沮丧的)笼统的话之前,你应该想一想“所讨论的操作系统有多大?”:)还有几件事要补充。4是一个简单的“不”。很少有编译器仍然可以生成16位代码。6也是“不”。您可以从任何模式写入视频内存,只要它映射到您的虚拟内存中即可。请注意,本教程的某些部分存在一些细微的错误,因此请小心(例如,假设在首次使用之前清除了任意内存)。虽然仍然是一个很好的教程-我真的应该写一些时间的问题的作者。但是,任何遵循教程并试图理解代码的人都应该注意到它们。