首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解释器如何使用机器指令?

解释器如何使用机器指令?
EN

Stack Overflow用户
提问于 2015-07-16 21:31:48
回答 1查看 64关注 0票数 0

我在网上找到这样一句话:“解释器是一种使用编程语言的基本指令集作为其机器语言来实现或模拟虚拟机的程序。”在上面引用的上下文中,是否有人可以将其解释为解释器如何实际完成高级指令的执行?网上的教程只涉及抽象的方式,说它一次只处理一行,executes.Does它使用机器指令库,或者是如何使用的?我很想知道这件事。

EN

回答 1

Stack Overflow用户

发布于 2019-06-30 20:49:30

解释器查看源代码中的每条指令,然后运行代码来执行该指令。它与机器代码无关。

例如,如果您的解释器是用C#编写的,并且源代码要求将两个数字相加,则解释器最终将调用一个将数字相加的方法。

许多解释器编译成字节码。字节码是可以比解析原始源代码更快执行的指令。因此,我们可能会得到以下字节码:

代码语言:javascript
复制
1,
7,
2

解释器定义这些数字的含义。但是我们可以把第一个数字作为指令。在本例中,1表示向变量添加一个数字。7可以是需要添加到的变量的索引。并且2可以是要添加的数字。因此,add函数的处理程序可能如下所示:

代码语言:javascript
复制
if (bytecode[current] == 1)
{
    int varId = bytecode[++current];
    int value = bytecode[++current];
    Variables[varId] += value;
}

所以机器码是由C#编译器生成的。解释器代码并不关心机器代码。它只有一个执行特定指令的例程。

这也应该说明为什么编译后的代码运行得更快。它将被编译成机器码,而不是字节码。因此,不需要在运行时调用处理程序。它将简单地直接执行指令。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31455693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档