1.0 KiB
1.0 KiB
解释执行
基于栈的指令集与基于寄存器的指令集
Javac编译器输出的字节码指令流,是一种基于栈的指令集架构,字节码指令六里面的指令大部分都是零地址的指令,以来操作数栈进行工作 另一套常用的指令集架构是基于寄存器的指令集,最典型的就是x86的二地址指令集,这些指令直接依赖寄存器工作 区别 基于栈的指令集优点是可移植,寄存器由硬件直接提供,程序直接依赖这些硬件寄存器不可避免的要受到硬件的约束,缺点是理论上执行速度会稍慢一些 解释执行时,栈架构指令集的代码虽然紧凑,但是完成相同功能的指令数量会比寄存器架构多得多,因为出栈,入栈本身就产生了相当大量的指令,而且栈在内存中,频繁的内存访问也是执行速度的瓶颈
基于栈的解释器的执行过程
运算过程的中间变量都以操作数栈的出栈,入栈为信息交换途径
