jvm 字节码执行引擎(2)—-解释执行

  1. 介绍虚拟机如何执行方法中的字节码

    java的指令流是基于栈实现的 ISA指令流中的指令大部分都是零地址的,依赖于操作数栈进行工作,与之相对的是基于寄存器的指令集,典型的就是x86的二进制地址方式加上指定寄存器进行操作,(在汇编中我们使用寄存器来存储数据,java中使用操作数栈进行操作),好处就是

    1)便于移植,不用考虑寄存器的大小和是否允许.由虚拟机决定把数据放在哪里,

    2)代码相对紧凑,字节码中每个字节对应一条指令,不用考虑(寻址问题,和相对寻址变址,带来的长度变化问题),

    3)编译器实现相对简单,(不需要考虑空间分配问题,所需空间都在栈上操作)

    缺点:执行速度相对慢了(栈要映射到寄存器中),指令数量多了很多,要操作数据(操作数栈的出栈入栈).

  2. 解释权执行过程:

     和x86汇编执行过程差不多,这里不做详细介绍


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注