c - 嵌入式系统的 Lisp 编译器设计?

标签 c compiler-construction embedded lisp systems-programming

我正在研究针对嵌入式设备(16KB 左右的 RAM)和低级系统编程(即内核模块)的 lisp 编译器的开发,这两者都需要复杂性保证和对低级结构的访问。

即使我需要这些构造,我也不希望语言是“低级”的,因为我想为用户提供仍然提供低级保证的高级构造(即 Lisp 宏,对方面的支持面向编程、逻辑或约束求解、函数范式等)。

我目前的思路是我需要:

  • 在 C99 上创建一个 s-expression 语法的精简包装器
  • 编写定义更高抽象级别的宏,同时仍然公开低级别的结构、指针等。
  • 将生成的 C99 代码输入 gcc,并获得我将运行的二进制文件

我想知道我的推理是否合理——这样一个进程生成的代码是否能够在如此小的内存占用下运行?我不希望该语言具有运行时组件。

最佳答案

Dale是 C(/一种类似 C 的语言),但使用 Lisp 的语法和几个高级编译时特性(宏、类型推断、匿名函数、模块……没有影响运行时的东西)编写。

PreScheme是从相反方向工作达到的相同目的地:它是 Scheme 的一种受限方言,删除那些无法 1:1 转换为 C 的运行时特性(例如延续、一般尾调用, GC, 运行时动态类型)。 PreScheme 继续在顶层支持 Scheme 运行时特性,因为这可以移至“编译时”。 PreScheme 是 Scheme48 的一部分并用于实现其运行时。

或者,在主要关注空间而非裸机性能的情况下,将解释器压缩到非常小的尺寸通常更容易; PICOBIT([1][2])旨在以 <7Kb 运行,同时提供相当完整的 Scheme 实现。

关于c - 嵌入式系统的 Lisp 编译器设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29639401/

相关文章:

c - 将 PuTTY 数据导入 MSP430

c - 从结构类型中删除元素

.net - 我可以让 .net 编译器进行一些乐观缓存以加快构建速度,而无需将代码库重构为程序集吗?

compiler-construction - 有人可以告诉我计算机编程原理的基本知识吗?

embedded - 是否有任何 MP3 编码器库 PIC 微 Controller 兼容?

c - for循环后scanf

c - 如何使用结构创建数据库表

macos - 在 OS X 上为 LLVM 设置环境变量

GCC for ARM -- ELF 输出文件段错位

c - LwIP 实现