深入Java虚拟机(十一):基于栈的字节码解释执行引擎

基于栈的字节码解释执行引擎

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

基于栈的指令集

优点:

1、可移植,因为不同处理器的寄存器不同。

2、代码相对紧凑,大部分都是零地址指令。

缺点:

执行速度慢

原因:完成相同功能所需的指令数量一般会比寄存器架构多,因为出栈、入栈操作本身就产生了相当多的指令数量。

栈实现在内存之中,频繁的栈访问也就意味着频繁的内存访问,不如处理器的寄存器快。

基于栈的解释器执行过程

     例:

public int calc() {
	int a = 100;
	int b = 200;
	int c = 300;
	return (a + b) * c;
}

使用 javap 命令看看它的字节码指令:

public int calc();
Code:
  stack=2, locals=4, args_size=1
     0: bipush        100
     2: istore_1
     3: sipush        200
     6: istore_2
     7: sipush        300
    10: istore_3
    11: iload_1
    12: iload_2
    13: iadd
    14: iload_3
    15: imul
    16: ireturn


        javap 提示这段代码需要深度为 2 的操作数栈和 4 个 Slot 局部变量空间,下图描述了执行过程中的代码、操作数栈和局部变量表的变化情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值