代码之家  ›  专栏  ›  技术社区  ›  user3318845

字节码如何更快?[已关闭]

  •  0
  • user3318845  · 技术社区  · 11 年前

    我正计划为我正在创建的语言创建一个虚拟机,我无法理解如何将程序集转换为自己的指令集,从而加快执行速度。如果我让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
    

    上面的字节码和汇编代码只是我认为它会是什么样子的例子。

    1 回复  |  直到 9 年前
        1
  •  4
  •   Brad Lanam    11 年前

    解析是出了名的困难和缓慢。

    如果您按照指定的方式使用汇编程序指令,则必须解析指令、解析参数和删除注释。大量解析代码、字符串比较、将参数转换为寄存器偏移量或值等。

    执行字节码是一个简单的switch语句,一个简单整数比较。寄存器参数可以预定义为寄存器数组中的偏移量。快得多。

    您仍然可以将其视为汇编器——只需将汇编器编译成字节码即可。字节码到汇编显示工具也很有用。