用于嵌入式系统的Lisp编译器设计?

时间:2015-04-14 23:59:31

标签: c compiler-construction embedded lisp systems-programming

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

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

我目前的思路是我需要:

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

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

2 个答案:

答案 0 :(得分:1)

Dale是C(/类C语言),但是用Lisp的语法和几个高级编译时功能(宏,类型推断,匿名函数,模块......)编写。没有什么会影响运行时间。)

PreScheme与从相反方向工作的目的地相同:它是Scheme的限制性方言,删除那些无法翻译的运行时功能1:1到C(例如continuation,一般尾调用,GC,运行时动态类型)。 PreScheme继续支持顶层的Scheme运行时功能,因为这可以移动到"编译时间"。 PreScheme是Scheme48的一部分,用于实现其运行时。

或者,如果主要关注的是空间但不一定是裸机性能,那么通常更容易将解释器缩小到非常小的尺寸; PICOBIT([1][2])旨在以< 7Kb的速度运行,同时提供相当完整的Scheme实现。

答案 1 :(得分:0)

我认为你可以在部分实现中访问cliki:

Common+Lisp+Implementation

之后我推荐你ECL

embeddable-common-lisp

我还推荐你这本书,Build Your Own Lisp,它教你如何用C构建一个完整的Lisp环境,book link