2024-06-28 14:37:38 发布
网友
字节码直接由python虚拟机执行,还是转换为机器码并由python虚拟机执行
python docs bytecode如下所示 这种“中间语言”被称为运行在虚拟机上,该虚拟机执行与每个字节码对应的机器代码
我阅读了stackoverflow中有关PVM、字节码的所有问题。python代码执行的最后一部分并没有被任何人清楚地解释
以下2个流量中哪一个是正确的
字节码由VM转换为机器码,VM执行机器码?CPU是做什么的?这里是空闲的吗
字节码由VM转换为机器码,VM是否将机器码发送给CPU执行
Python是一种语言。CPython是Python的参考实现
CPython没有现成的JIT,但是您可以使用numba为CPython获得简单的JIT
此外,至少有一种Python语言的实现是JIT现成的:Pypy
(JIT将字节码转换为机器码以提高性能)
假设每个字节码指令由一个操作码和零个或多个操作数组成。有固定的一小组操作码和(通常)相当大的一组操作数
对于每个不同的操作码,VM的源代码都有一些实现该操作码的代码。所有的源代码都被编译成机器代码。因此,在VM的机器代码中,每个操作码都有机器代码
当CPU执行VM的机器代码时,VM通过查看其操作码,然后切换/跳转到实现该操作码的机器代码块,并将操作数传递给它,从而重复执行下一条字节码指令
在这个过程中,没有任何一点是将整个字节码指令翻译成等效的机器代码,所以两个“流”都不正确
当Python文档说VM“执行对应于每个字节码的机器代码”时,这有点不精确。只有CPU执行机器代码。具体而言,CPU在执行VM的机器代码时,将执行与输入字节码中出现的每个操作码对应的机器代码
Python是一种语言。CPython是Python的参考实现
CPython没有现成的JIT,但是您可以使用numba为CPython获得简单的JIT
此外,至少有一种Python语言的实现是JIT现成的:Pypy
(JIT将字节码转换为机器码以提高性能)
假设每个字节码指令由一个操作码和零个或多个操作数组成。有固定的一小组操作码和(通常)相当大的一组操作数
对于每个不同的操作码,VM的源代码都有一些实现该操作码的代码。所有的源代码都被编译成机器代码。因此,在VM的机器代码中,每个操作码都有机器代码
当CPU执行VM的机器代码时,VM通过查看其操作码,然后切换/跳转到实现该操作码的机器代码块,并将操作数传递给它,从而重复执行下一条字节码指令
在这个过程中,没有任何一点是将整个字节码指令翻译成等效的机器代码,所以两个“流”都不正确
当Python文档说VM“执行对应于每个字节码的机器代码”时,这有点不精确。只有CPU执行机器代码。具体而言,CPU在执行VM的机器代码时,将执行与输入字节码中出现的每个操作码对应的机器代码
相关问题 更多 >
编程相关推荐