- 介绍虚拟机如何执行方法中的字节码
java的指令流是基于栈实现的 ISA指令流中的指令大部分都是零地址的,依赖于操作数栈进行工作,与之相对的是基于寄存器的指令集,典型的就是x86的二进制地址方式加上指定寄存器进行操作,(在汇编中我们使用寄存器来存储数据,java中使用操作数栈进行操作),好处就是
1)便于移植,不用考虑寄存器的大小和是否允许.由虚拟机决定把数据放在哪里,
2)代码相对紧凑,字节码中每个字节对应一条指令,不用考虑(寻址问题,和相对寻址变址,带来的长度变化问题),
3)编译器实现相对简单,(不需要考虑空间分配问题,所需空间都在栈上操作)
缺点:执行速度相对慢了(栈要映射到寄存器中),指令数量多了很多,要操作数据(操作数栈的出栈入栈).
- 解释权执行过程:
和x86汇编执行过程差不多,这里不做详细介绍
发表回复