当前位置: 首页 > 知识库问答 >
问题:

口译员的确切角色是什么?

令狐建修
2023-03-14

难以理解口译员的确切角色。引用wikipedia的话:“虽然口译语言[1]中的程序没有翻译成机器代码,但它们的解释器(可能被视为执行器或处理器)通常由直接可执行的机器代码组成(由汇编和/或高级语言源代码生成)。”

我对这句话表示怀疑——“解释器(可能被视为执行器或处理器)通常由直接可执行的机器代码组成”?这是什么意思?解释器应该是一个程序。它如何自己“执行”代码?他们重申了这一事实,称“口译员不同于编译器等语言翻译人员”。有人能澄清一下吗?另外,解释语言和机器代码之间有什么区别(如果有)?

共有2个答案

魏宏邈
2023-03-14

我将简要描述一个模拟器,以解释问题中提到的主要概念。

假设我使用的是视频游戏模拟器Mame,并选择了古老的经典街机“PacMan小姐”。查看示意图或直接查看街机视频游戏中的PCB,很容易找到处理器:zilog Z80,这是唯一一款具有40个引脚的大型芯片。现在,如果我们得到该处理器的技术数据,我们可以找到它可以执行的每条指令的二进制编码。基本上,它会得到一个8位数据(值范围从0到255),告诉处理器该做什么。在仿真器的情况下,它读取字节(与原始miss pac man电子板中Z80处理器的字节完全相同),确定Z80的功能并模拟指令。

一些经典视频游戏可能使用了x86处理器,类似于目前大多数PC中使用的处理器。即使在Mame中选择这样的游戏,模拟器仍然会读取该游戏中找到的字节,并按照x86处理器的方式解释每个字节。换句话说,模拟器不会利用PC和模拟游戏使用类似处理器的事实。无论运行Mame的PC是否与原始游戏有任何相似之处,它都会执行相同的步骤来模拟任何游戏。

您在问解释器如何执行代码?解释器是一个程序(解释器只是一个软件,而不是一个物理处理器)。措辞实际上令人困惑。为了让这句话有意义,我们需要满足以下所有条件:1-要解释的程序已经是二进制的,是一种机器语言,可以由PC中使用的处理器直接执行2-程序位置,使用的确切地址,与您可以在PC中保留的位置相同3-任何库和任何I/O都占用完全相同的地址

当所有这些条件都满足时,解释器可以告诉PC上的处理器停止执行解释器的代码,而是“跳转”要解释的程序的代码。任何人都可以说:它不是一个解释器,它只是一个启动器。

也许这样一个解释器实际上并不解释,但让处理器完成真正的工作,它在以下方面仍然很有用:它可以让处理器执行一些工作,但当要解释的代码正在执行某种类型的指令时,会html" target="_blank">请求生成异常。例如,让代码运行,但在尝试执行“IN”或“OUT”的任何变体时,会生成“常规保护错误”或“trap”或“exception”。解释器将记录正在写入的I/O端口,或者选择要给出的值,而不是允许读取真实的I/O端口。然后,解释器将设法让处理器在程序中“跳转”,以便在指令“输入”或“输出”之后的位置进行解释。

通常,解释器读取ASCII文本文件、原始源代码(可以是Unicode而不是ASCII),逐行逐字确定编译器将执行的操作,然后动态模拟任务。当原始编译器需要读取许多行才能完全理解当前任务时,解释器还需要读取所有这些行,然后才能模拟相同的任务。

解释器的一大优点是它不会崩溃。因为每个指令都是模拟的,所以它对任何bug或恶意代码都不敏感。当计算机遇到任何错误需要重新启动时,这是一个很大的优势,而重新启动需要10分钟或更长时间。

如今,由于快速SSD可以在5秒钟内重新启动,而且可靠的操作系统可以捕获一个进程中的任何错误并关闭该进程,而不会影响机器的稳定性,因此与速度快得多的JIT或速度快得多的二进制可执行文件相比,选择速度慢的解释器的动机就更少了

叶文博
2023-03-14

编译器:将您的代码转换为可由CPU直接执行的二进制机器代码。示例:C、Fortran

解释器:执行程序员编写的代码的程序,无需额外的转换步骤。示例:Bash脚本、Excel中的公式

事实上,这已经不那么容易了。这两个政策之间有许多概念。Java被编译成一种中间语言,然后进行解释,实时编译器编译解释代码的一小部分以加快速度。

“它怎么能自己‘执行’代码呢?”以Excel为例。如果你在单元格中键入一个计算,Excel会以某种方式执行代码,对吧?但是Excel不会编译代码并运行它,而是会解析它并以一般方式执行。Excel有一个和函数,最终作为add机器命令在处理器上执行,但在这两者之间,Excel还有很多事情要做。

 类似资料:
  • 角色决定了员工的管理范围、功能权限,一个员工可以有多个角色。当员工拥有多个角色时,其管理范围、功能权限为多个角色相加。 管理范围 您可设置角色的管理范围,若设置该角色管理范围为部门,则可管理员工与单据;和设置该员工管理范围为项目,则可管理单据。部门支持选择所有部门、所在的部门及所有子部门、指定部门 项目支持选择所有项目、所在的项目及所有子项目、指定项目 功能权限 您可设置角色的功能权限,其中单据、

  • PyCharm包含解释器,可以根据需要创建具有新功能的新项目。 您可以根据需要在系统中创建虚拟环境。 您还可以在对话框中继承全局站点包。 Python包索引(PyPI)上提供了解释器,可以使用pip install.轻松安装和访问pip install. 创建口译员 对于创建解释器,始终建议创建一个管理所需配置的新项目。 请查看以下屏幕截图以获得更好的理解 - 这些参数包括 - 位置 - 这描述了

  • 这两天我一直在和Git Bash合作。我现在知道了诸如、、、和等基本操作。但我还是不知道Git Bash本身到底是什么! 我已经搜索了很多关于Git Bash的内容,但是我看到的所有站点都集中在它的命令的功能上。我仍然没有为我的问题找到一个好的答案。现在,我想,我在正确的地方得到这个答案!

  • 团队, 使用continueAsNew的确切用例是什么? 由于我们支持Cron附表进行定期活动,我不知道使用它的场景。 我们这样做是为了提供向后兼容性吗

  • 因此,当我编写java文件时: 然后在windows cmd中,我以以下方式编译: 很好,结果是: “严肃的业务逻辑。” 在Netbeans中创建项目时,会添加以下行: 我不能在cmd中编译,只能在IDE中编译。我尝试过manifest.txt,UTF8编码没有BOM,加上文件的换行符。 显示txt: “jar cvfm Program.jar Manifest.txt Program.class

  • 我的代码中有这一点,但当我执行命令两次(名称命令、用户和角色)时,它不会返回这条消息。它一直在说“我将[角色名]添加到[用户]”