解释程序(例如perl、shell)是如何工作的
我提出一个假设:1。操作系统创建一个进程空间来启动解释器;2.解释器创建一个新的进程空间来启动需要解释的程序,将第一条语句翻译成机器语言;3.第一条语句的执行结束并中断;4.解释器翻译下一条语句,并动态修改和创建新指令。嗯,我无法弥补。我无法理解解释和执行的概念。下面是一个示例解释器:解释程序(例如perl、shell)是如何工作的,shell,perl,Shell,Perl,我提出一个假设:1。操作系统创建一个进程空间来启动解释器;2.解释器创建一个新的进程空间来启动需要解释的程序,将第一条语句翻译成机器语言;3.第一条语句的执行结束并中断;4.解释器翻译下一条语句,并动态修改和创建新指令。嗯,我无法弥补。我无法理解解释和执行的概念。下面是一个示例解释器: while (<>) { my ($cmd, @args) = split; if ($cmd eq '...') { ... } elsif ($cmd eq '...')
while (<>) {
my ($cmd, @args) = split;
if ($cmd eq '...') { ... }
elsif ($cmd eq '...') { ... }
elsif ($cmd eq '...') { ... }
else { ... }
}
(抄袭自)
ops实际上是排列在链表中的数据结构(带有用于跳转的其他指针),而不是字节流编码指令。上面的循环遍历列表,执行与每个操作相关联的函数。这些函数返回要执行的下一个操作的地址,从而形成程序
有些语言可能采取类似的方法。其他语言肯定会采取不同的方法。做一些搜索和阅读,你会发现这很容易。这超出了范围,请看一下口译页面。此外,本文还对当时的几个口译员进行了比较。当您运行Perl程序时,编译器首先编译源代码,然后执行它。在我看来,这似乎使Perl更像是一种编译语言而不是解释语言。