Files
Hui-s-notebook/基于栈的字节码解释执行引擎.md
2023-09-10 10:50:53 +08:00

1.0 KiB
Raw Permalink Blame History

解释执行

!Pasted image 20230613175811.png

基于栈的指令集与基于寄存器的指令集

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

基于栈的解释器的执行过程

运算过程的中间变量都以操作数栈的出栈,入栈为信息交换途径