从零开始:用汇编构建 OS 与 C 编译器
Tumble Forth – from assembly to OS with C compiler
我是 Virgil Dupras,Collapse OS 和 Dusk OS 的作者。我发起这个系列文章,旨在引导像我一样的普通 Web 开发者,一步步踏入底层编程的奇妙世界。我们将避开现代软件复杂性的深渊,从 PC 平台的裸机环境出发,亲手从零构建一个 Forth 系统,随后切换到 Dusk OS,并最终从零编写一个足以编译示例代码的 C 编译器。这一系列故事将带你经历从汇编到操作系统的完整旅程,拓宽你对计算的认知边界。如果你熟悉编程但对底层技术感到陌生,这正是为你准备的内容。
让我们对现代软件复杂性的深渊投以厌恶的一瞥,然后跳进底层开发的兔子洞,逃离这个反乌托邦。
HN 评论区
12- fjfaase
为了在 live-bootstrap 项目中替换 GNU Mes 编译器,我开发的 C 编译器也使用了一种类似 Forth 的语言,它采用双栈结构:一个栈用于参数和返回值,另一个栈用于返回地址和局部变量。这种类 Forth 语言会被转译为汇编代码,再经过若干步骤生成 ELF 文件。支持的目标架构包括:x86、x86_64 和 arm64。riscv64 的支持工作已经启动,但因其他职责目前处于搁置状态。如果有人愿意接手完成这项工作,我有一些小额资金可以作为奖金。
- zovirl
> 另一种做法是完全绕过这种复杂性,自己构建一个操作系统。
> 我们将直接操作裸机,然后构建我们自己的操作系统,并配上我们自己的 C 编译器。这样反而更简单。
我真的很欣赏这种说法的胆识。我也很推崇这种“让我们实现______最简单可能的版本来学习它是如何做到的”的思路。
- drivers99
哦对,这完全对我的胃口。我一直想尝试在裸机上实现一个 Forth(去年夏天我用 C 写过一个 Forth 解释器,还在 C64U 上用手工汇编的机器语言做了一点栈操作测试),就在看到这条链接前的几分钟,我(巧合地)想到的正是用刚买到的软盘在我的 8088 IBM PC 上制作一个引导扇区。我知道这只能适用于实模式部分,但无论如何从那里开始应该挺有趣的。编辑:我知道 CollapseOS,但没意识到这个项目也存在很久了。