深入理解java虚拟机----一段java代码的字节码解读(6)

 

 

 Code:
   stack=2, locals=5, args_size=1
      0: iconst_0                     iconst_0  加载常量0到操作栈顶
      1: istore_1                     istore_1 存储常栈顶的值到局部变量表的 第1个slot中(slot从0开始)
      2: iinc          1, 1            iinc 将slot1的值加1
      5: iload_1                      iload_1 将第slot1加载进入操作栈
      6: iconst_3                    iconst_3 将常量3加载进入操作栈
      7: if_icmpne     12         if_icmpne 将栈顶两个值比较如果不相等则进行跳转到12行 弹栈
     10: iconst_4                  加载常量4
     11: ireturn                      返回给调用者
     12: iconst_3                 比较不相等,加载常量3到操作栈
     13: istore_1                将操作栈顶的值存入slot1
     14: goto          47         调转到47行
     17: astore_2              catch Exception 将对象e存入 slot2
     18: iconst_2               加载常量2
     19: istore_1               将栈顶值存slot1 
     20: iload_1               加载slot1进入操作栈
     21: istore_3            将栈顶值存入slot3
     22: iload_1            加载slot1进入操作栈(值为2)
     23: iconst_3           加载常量3进入操作栈
     24: if_icmpne             29      比较 栈顶的两个值 如果不想等 则调整到29行
     27: iconst_4              加载常量4进入操作栈
     28: ireturn             返回栈顶值给调用者
     29: iconst_3       加载常量3进入操作栈
     30: istore_1        存储在slot1
     31: iload_3       加载slot3到操作栈顶
     32: ireturn        返回栈顶值给调用者
     33: astore        4      如果出现了不是Exception的对象存入slot4
     35: iload_1         加载slot1的值进入操作栈 (值1)
     36: iconst_3        加载常量3进入操作栈
     37: if_icmpne     42  比较栈顶的值
     40: iconst_4  加载常量4
     41: ireturn   返回
     42: iconst_3  加载常量3
     43: istore_1  存储在slot1
     44: aload         4  加载slot4
     46: athrow   抛出 栈顶的 slot4
     47: iload_1   加载slot1的值进入操作栈
     48: ireturn     返回栈顶值给调用者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值