mterp是什么意思?

6

在dalvik源代码中有一个名为mterp的文件夹,其路径为/vm/mterp
我想知道mterp这个词是什么意思?


3
这似乎是一个合理的问题。我们保留这个副本,但关闭另一个副本作为重复。 - JesusFreke
3个回答

5
“m”代表“模块化”,mterp是模块化解释器。
这是之前实现的演变,它实际上是一个巨大的switch语句。正如在mterp README中所述:
“这是Dalvik解释器的源代码。最初版本的核心是作为单个C函数实现的,但为了提高性能,我们将其重写为汇编语言。为了使这个和未来的汇编端口更容易、更少出错,我们采用了一种模块化的方法,允许逐个操作码地开发特定于平台的代码。”
能够在操作码粒度上切换实现非常有价值,因为它允许我们通过快速更改配置文件在C和汇编实现之间进行切换 - 如果您怀疑汇编版本中的某些内容不太正确,这非常方便。当我们想要添加浮点支持时,我们只需编写新的操作码片段并创建一个替换浮点相关指令的新配置文件
该结构还使得将解释器移植到全新平台变得更加容易,因为您可以逐步从“可移植”解释器发展到“快速”解释器。端口

0

来自Dalvik "mterp" README

==== Overview ====

This is the source code for the Dalvik interpreter.

显然,mterp是Dalvik使用的解释器的名称。它是VM的一部分,直接执行或执行代码。


是的,它是解释器。但我想知道的是字母 m 代表什么? - YKG

0

mterp是dalvik虚拟机解释器的模块。

在语言虚拟机中,有许多模块,如HeapManager(GC)、JNI(java native interface)、字节码解释器等。

在这里,mterp是字节码解释器的模块。你应该知道,Dalvik vm bytecode是DEX格式。在vm解释器的实现中,mterp包含许多不同的架构,如X86、arm、misp等。

如果你想学习这个模块,我建议你先概览Dalvik VM的/docs/java-bytecode.html。然后再研究mterp的c实现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接