【问题标题】:Assembly Language kernel汇编语言内核
【发布时间】:2011-04-20 08:09:34
【问题描述】:

我正在尝试纯粹用汇编语言编写内核。我该如何进行开发环境和一般设置,让我可以控制我想要它做什么?

【问题讨论】:

  • 我有一种感觉,如果你不得不问这个问题,你可能给自己定了太高的目标......
  • 您是否熟悉其他环境中的非平凡汇编语言编程?你能理解用 c 编写的 OS 内核在做什么吗?如果你不能回答“是”。对于这两个问题,您可能希望从不太复杂的层面开始......
  • 您可能希望对您的问题更具体一点。您还没有告诉我们您正在使用哪种汇编语言进行编程,因此很难推荐一个环境。除了“让我控制我想做什么”是什么意思?你到底想做什么?一般来说,您在问题中提供的信息越多,您就越有可能得到对您有帮助的答案(而不是其他人认为可能对您有帮助的答案)。既然您说您正在尝试添加到已经获得的信息,那么您已经拥有什么信息?
  • @ManX:我断言,与使用 C 相比,您开发的程序集的性能将更差。编译器非常非常好。你知道,对,C 编译成与汇编相同的机器代码?换句话说,您的 C 不会被解释。不强调这一点,但您不能像编译器那样生成高性能的代码。而且你仍然可以在你的 C 代码中使用内联汇编。
  • 如果你没有读过编译器的汇编输出,你就无法判断它的效率。一般来说,人类编写的代码很差。在优化编译器方面投入了大量精力,以便人们可以编写糟糕的代码并使其快速执行。指令调度也很困难。分支预测也很有趣。可以针对瓶颈编写手工组装的程序,但对整个操作系统执行此操作是不可行的,除非您有大约十年的空闲时间,然后 CPU 和编译器将继续前进,您的代码将仍然 慢一点。

标签: assembly kernel


【解决方案1】:

osdev.org 应该有你需要的一切。

本网站提供有关创建 操作系统,并作为一个社区为那些 对创建操作系统感兴趣的人

为了更清楚一点,除了网站上的所有资源和信息外,还有两个组装“入门教程”:

  1. 32-bit Assembly Bare Bones
  2. Real Mode Assembly Bare Bones

从那里开始,您可以进一步探索 wiki,它拥有人们所需的一切,以一种或另一种基本形式

【讨论】:

  • 本人精通C、C++等,但需要编写内核进行核心硬件交互。我知道这不是太高的目标。请DarkDust,答案对我很重要。如果有人知道我需要做什么,我将不胜感激。不要隐瞒细节,因为我正在尝试添加到已经获得的信息中。
  • osdev.org 网站似乎专注于 C 编写操作系统(我希望我错了)。我正在尝试纯粹在 ASM 中编写内核。
  • 是的dmckee,您的问题的答案是肯定的。
  • 感谢 Grizzly,我没有特定的 ASM 可供编程,但我正在努力决定要走哪条路线。我需要的是直接与硬件交互(主要是视频),以便程序可以(例如)通过我的图层绘制图形。这只是一个示例,我不想编写设备驱动程序,因为它会受制于现有操作系统。基本上,我想直接与硬件(视频、打印机、扬声器等)接口,以便其他程序可以通过我的层这样做。
  • @ManX- 使用 Stack Overflow 的两个注意事项: 1. 您应该在 same 评论部分回答评论。除了问题总是出现在顶部(并且接受的答案在之后(除非它们是自己的答案))之外,不能保证帖子出现的顺序。 2. @displayname 约定会激活通知机制,以确保您所联系的人看到您已回答。
【解决方案2】:

我曾经是一名 VAX 开发人员。我建议你找一份带有 exec 的 VMS microfiche 副本,用汇编程序编写。

【讨论】:

  • 嗨 Renee,你给我的信息似乎很有用。我相信这个 VAX 系统的架构接近我的目标。您能否给我更多关于从哪里获得“与 exec 的 VMS 缩微胶片”或其他任何可以帮助“看到”设计的信息?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-24
  • 2014-10-07
  • 1970-01-01
  • 2013-01-17
  • 2013-09-04
  • 1970-01-01
相关资源
最近更新 更多