【发布时间】:2013-11-28 13:08:45
【问题描述】:
是否有任何遵循 ansi c 扩展的小型 c 编译器,但它的 LOC 仍然少于 10,000。基本上'正在尝试将这样的小型编译器移植到称为 xv6 的此类教育 OS 内核之一。谢谢。
【问题讨论】:
-
永远不明白教别人一些他们在现实世界中永远不会使用的东西的概念
-
如果你有一个在 xv6 中运行的汇编器和一个链接器(或者如果你可以移植 NASM 或在 xv6 上实现它的一个很小的子集),移植我的SmallerC 应该相当容易。最近有很多改进,现在编译器可以在 DOS、Windows 和 Linux 上自托管,并且可以交叉编译到这 3 个平台。它还实现了大部分标准库(除了那些需要不受支持的语言特性的函数(例如浮点、按值传递/返回结构、完整的预处理器))。
-
所以,虽然Smaller C 仍然依赖 NASM(或 YASM)来编译从 C 代码生成的汇编代码,但它现在可以使用带有简单包装器的 FASM(参见 Smaller C 中的 n2f.c)将 NASM 语法转换为 FASM 语法和布局。 FASM 是自己编写的。这意味着现在移植 Smaller C 和 FASM 应该很容易,只需教 FASM 和 Smaller C 库使用 xv6 系统调用就可以了。
标签: c compiler-construction xv6