相关疑难解决方法(0)

Metacircular Interpreter的确切定义是什么?

调用用C编写的C编译器或用PHP metacircular编写的PHP解释器是否合法?这个定义是否仅对特定类型的语言有效,比如Lisp?简而言之,口译员被称为Metacircular应满足的条件是什么?

c lisp scheme interpreter self-interpreter

18
推荐指数
2
解决办法
4357
查看次数

Lisp与计算机硬件的交互看起来如何?

在C语言中,由于诸如“地址”和“易失性”之类的概念已内置于该语言中,因此很容易操作存储器和硬件寄存器。因此,大多数操作系统都是使用C语言族编写的。例如,我可以将任意函数复制到内存中的任意位置,然后将该位置作为函数调用(假设硬件不会阻止我执行数据;当然,这在某些微控制器上是可行的)。

int hello_world()
{
    printf("Hello, world!");
    return 0;
}

int main()
{
    unsigned char buf[1000];
    memcpy(buf, (const void*)hello_world, sizeof buf);
    int (*x)() = (int(*)())buf;
    x();
}
Run Code Online (Sandbox Code Playgroud)

但是,我一直在阅读有关某些专用Lisp机器的Open Genera操作系统的信息。维基百科说:

属完全用Lisp编写;甚至所有低级系统代码都用Lisp编写(设备驱动程序,垃圾回收,进程调度程序,网络堆栈等)。

我对Lisp完全陌生,但这似乎是一件困难的事情:从我所见,Common Lisp对运行的硬件没有很好的抽象。Common Lisp操作系统将如何做一些基本的事情,例如编译以下琐碎的函数,将其机器代码表示形式写入内存,然后调用它?

(defun hello () (format t "Hello, World!"))
Run Code Online (Sandbox Code Playgroud)

当然,Lisp 本身可以很容易地实现,但是用Sam Hughes 的话说:“在某个地方,抽象用完了,机器必须执行一条指令。”

common-lisp

5
推荐指数
1
解决办法
1143
查看次数

标签 统计

c ×1

common-lisp ×1

interpreter ×1

lisp ×1

scheme ×1

self-interpreter ×1