我正在计划为我正在创建的语言创建一个虚拟机,我无法理解如何将我的程序集转换为我自己的指令集可以使执行更快。如果我让VM了解我的程序集,那与使我的VM理解我的字节代码不完全相同吗?显然字节代码的字符数少于程序集会产生的差异吗? 例如,如果我创建自己的字节代码,那么我必须向我的虚拟机展示如何理解它,如果虚拟机直接读取汇编,那么我仍然需要向它展示如何理解汇编,那么怎样才能更快比另一个?
- 编辑 -
因此,如果我让我的虚拟机直接解释下面的代码,它应该和它下面的代码一样快吗?
add r1, r2, r3 ; Add the values of reg2 and reg3, store the result in reg1
print r1
编码字节码:
c5 7c 8c d8 c8 d7
上面的字节代码和汇编代码只是我认为它的样子。
答案 0 :(得分:4)
解析是众所周知的困难和缓慢。
如果您使用指定的汇编程序指令,则必须解析指令,解析参数,删除注释。大量的解析代码,字符串比较,转换参数以注册偏移量或值等等。
执行字节代码是一个简单的switch语句,一个简单的整数比较。寄存器参数可以预先定义为寄存器数组的偏移量。快得多。
您仍然可以将其视为汇编程序 - 只需将汇编程序编译为字节代码即可。汇编程序显示工具的字节代码也很有用。