【发布时间】:2015-07-26 13:30:42
【问题描述】:
我已经用 Java(因为它是我最熟悉的语言)创建了一个原型 VM,并且我正在尝试以字节码格式存储指令。我想知道如何将值存储在字节码中,因为 bytes 只能是 0 到 255。
举个例子:
push 4752
Push 的操作码值为 0。 但是我怎么能存储 4752 呢?它不适合单个字节。 我可以将值存储在 4 个字节中,因此允许它们是 32 位整数,但是我必须决定是加载一个操作码(1 个字节)还是一个值(4 个字节)。目前我将程序作为整数数组传递,VM 循环遍历数组并执行操作码。如果操作码需要一个值,它会从数组中获取它,然后增加程序计数器以跳过该值,这样它就不会被执行。
我试图弄清楚像 JVM 这样的虚拟机是如何做到这一点的,但我无法找到。
【问题讨论】:
标签: bytecode vm-implementation