Encoding 虚拟机指令长度

Encoding 虚拟机指令长度,encoding,binary,hex,bytecode,vm-implementation,Encoding,Binary,Hex,Bytecode,Vm Implementation,我正在创建一个虚拟机,并将指令编码为字节码。指令是十六进制数,如下所示:0x1064,此指令表示将值100(十六进制64)加载到寄存器0中,加载指令的编号为1。我的问题是,如果我想加载一个更大的数字,我会将64更改为一个更大的数字3E8,例如(1000个十六进制)指令将有5个字符长,是否可以保持指令相同的长度?如何保持指令相同的长度?当然可以保持指令相同的长度。事实上,只使用一条指令就可以实现图灵完全语言!问题是你想做什么 为了简化解码,您可以决定让所有指令的长度相同。它增加了代码的大小,但无论

我正在创建一个虚拟机,并将指令编码为字节码。指令是十六进制数,如下所示:
0x1064
,此指令表示将值100(十六进制64)加载到寄存器0中,加载指令的编号为1。我的问题是,如果我想加载一个更大的数字,我会将
64
更改为一个更大的数字
3E8
,例如(1000个十六进制)指令将有5个字符长,是否可以保持指令相同的长度?如何保持指令相同的长度?

当然可以保持指令相同的长度。事实上,只使用一条指令就可以实现图灵完全语言!问题是你想做什么


为了简化解码,您可以决定让所有指令的长度相同。它增加了代码的大小,但无论如何都不重要。只要做你认为最好的事情。

要么让指令足够长以容纳整个32位或64位操作数,要么提供分别加载上半部分和下半部分(或单个字节)的指令。或者有一条指令“向左移位8位,然后再移位8位(立即值)”。