【问题标题】:Making a Custom Kernel制作自定义内核
【发布时间】:2012-01-17 06:17:53
【问题描述】:

我希望制作一个自定义内核,加载并执行代码(我的代码类似于 lua),以便我可以使用它来制作操作系统,我已经在 java 中制作了一个基本内核,但我真的需要知道如何在 Assembly 中制作它。

谁能告诉我在汇编中制作高效内核的步骤?

【问题讨论】:

    标签: assembly operating-system


    【解决方案1】:

    正如有人已经建议OS Dev 是去的地方。我还会确保你知道如何让内核与其他结构更丰富、更常用的语言一起工作,这样你就有更多的资源来做这件事。让 C/++ 与汇编一起工作并不像听起来那么难,尽管从头开始编写标准库是一个巨大的痛苦。所以当你让它工作时,我可能不会去重写标准库,但我肯定会先让它工作,然后为你自己的语言添加功能。

    不过,一定要看看龙书,名为“编译器:原理、技术和工具”,封面上以龙命名。任何编写自己的编译器的人都需要阅读。这是编译器之类的圣经。

    至于用汇编/从头开始编写内核,请注意:

    • 我是否打算在汇编/第一次 - 内核/操作系统开发中加入那些远不及初学者水平的东西? (图形、复杂的菜单系统、游戏等)
    • 我计划实施的任何(如果不是全部)事情是否有替代方案?
    • 您并不总是需要独自完成或从头开始编写代码。虽然当您喜欢从头开始做事或感觉自己是某事的唯一创造者时,通常会有这种感觉。

    如果您提前考虑过或者完全将其作为一种没有野心的学习体验,那么您可能已经准备好开始编写代码了。我发布的网站链接将是最有价值的信息来源。另外需要注意的是,有很多方言或汇编实现,我最喜欢的是 FASM 和 NASM。我绝对推荐 NASM,因为它几乎可以在任何值得注意的系统下构建,并且拥有迄今为止我遇到的最便携的代码。永远不要永远依赖组装便携!通常,即使是有意的,也不是。

    【讨论】:

    • 有人曾经告诉我 NASM 是“最便携的程序集”,当时我并没有真正意识到他并不是说我可以将相同的代码移动到完全不同的系统中,所以我在与我的目标不同的系统上写了一些东西,并希望它能够工作。我不明白为什么没有,现在我有点更有经验,我只能传递建议:P.
    【解决方案2】:

    如果你只是想摆弄一下,look at this guide

    您也可以查看this project的代码。

    关于这个问题的一本流行书是this one

    【讨论】:

      【解决方案3】:

      会对您在 Java 中如何做到这一点非常感兴趣。这个website 非常适合关于操作系统开发的所有事情。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-22
        • 2014-05-08
        • 2015-12-31
        • 2018-03-07
        • 2015-10-23
        • 1970-01-01
        相关资源
        最近更新 更多