【发布时间】:2013-08-15 08:54:59
【问题描述】:
是否存在具有 Lisp 语义和 C 低级操作的 Lisp 方言?诸如检索任意内存地址(虚拟内存或物理内存)并对其进行处理;指向硬件设备的指针...
例如:
(defvar a '(1 2 3 4)) ;; I have a list
(defvar b (cdr a)) ;; b is the cdr of a. But I want b to
;; actually refer to the tail of a
(setf b '(4 5 6)) ;; b now has new value, but a remains unchanged
我想要的是用 Lisp 来表达底层的问题。例如,在裸机上运行 Lisp 时如何控制单个字节和位?在 C 语言中,我可以获得一个指针并执行指针运算以指向内存空间(虚拟或物理)中我想要的任何位置。指针也可以指向设备和硬件设计者定义的任意地址。
我为什么需要这个?好吧,我想学习如何在低级编程中使用 Lisp。从长远来看,我想写一个简单的操作系统来学习,但是在 Lisp 中。我也会用 C 写一个来初步理解,但如果我只能用 C 写,我怎么能确定并说我理解如何实现一个操作系统?我想只有当我能用 C 以外的其他语言编写操作系统时,我才能真正理解如何实现操作系统。
我不想为操作系统编写诸如 C 核心之类的东西,而为其他一切编写诸如 Lisp 之类的东西。
【问题讨论】:
-
不确定你在问什么。 GC 和低级内存操作可以共存。大多数 Common Lisp 实现都可以做到这一点。请参阅相应手册中有关 FFI 的章节。另请参阅 ECL 等可以轻松嵌入到 C 程序中的实现。
-
@RainerJoswig 我编辑了问题以使其清楚。除了依赖 C 和主机操作系统进行低级操作,还有其他解决方案吗?