美文网首页
看 java 指令集做了什么

看 java 指令集做了什么

作者: Yahahaya | 来源:发表于2017-10-11 00:09 被阅读0次

java指令由一个字节存储,根据不同指令后面跟不同操作数,可能零个,可能多个,对于指令集的描述这里只解释样例中有使用到的


看代码

class Test {
    public static void main(String[] args) {
        int num=200;
        for(int i=1;i<=100;i++){
            num+=i;
        }
    }
}

使用javap查看编译之后的code

public static void main(java.lang.String[]);
  Code:                                     
     0: sipush        200                   
     3: istore_1                            
     4: iconst_1                            
     5: istore_2                            
     6: iload_2                             
     7: bipush        100                   
     9: if_icmpgt     22                    
    12: iload_1                             
    13: iload_2                             
    14: iadd                                
    15: istore_1                            
    16: iinc          2, 1                  
    19: goto          6                     
    22: return                              

执行指令后对应局部变量表和操作数栈的变化

指令解释

指令位置 指令 解释
0 bipush 200 200推入操作数栈顶
3 istore_1 200弹出操作数栈顶,存入局部变量表索引1
4 iconst_1 1推入操作数栈顶
5 istore_2 1弹出操作数栈顶,存入局部变量表索引2
6 iload_2 加载局部变量表索引2到操作数栈(1)
7 bipush 100 100推入操作数栈
9 if_icmpgt 22 比较栈顶两个元素,根据结果决定是否跳转,栈顶两元素会被弹出( 如果1大于100,对应代码i<=100,则跳转到22 return)
12 iload_1 加载局部变量表索引1到操作数栈(200)
13 iload_2 加载局部变量表索引2到操作数栈(1)
14 iadd 栈顶两元素相加(200+1),再压入栈顶
15 istore_1 栈顶元素(201)存入局部变量表索引1
16 iinc 2,1 栈顶元素索引2 加1 (对应代码i++)
19 goto 6 跳转到指令位置6,(循环)
22 return return

目前只了解到这里,如有错误,欢迎指正。

相关文章

  • 看 java 指令集做了什么

    java指令由一个字节存储,根据不同指令后面跟不同操作数,可能零个,可能多个,对于指令集的描述这里只解释样例中有使...

  • JAVA 虚拟机简单简介

    JAVA 虚拟机的架构 小白学习记录,不做参考,勿喷Java虚拟机采用的是栈指令集架构 栈指令集架构 寄存器指令集...

  • JAVA面试题大全希望能够挑动大家的味蕾!(附赠BAT面试大全)

    Java的跨平台原理是什么? Java通过不同的系统,不同版本,不同位数的java虚拟机来屏蔽不同的系统指令集差异...

  • java字节码

      我们都知道Java字节码是JVM所使用的指令集。java字节码可以分为如下几类: 操作数栈   Java 方法...

  • JVM的架构模型(区分栈的指令集架构和寄存器的指令架构)

    Java编译器输入的指令流基本上是一种基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构 具体来说:...

  • 指令集、体系架构、微架构 [转]

    指令集、体系架构、微架构 [转] 转载自《操作系统真相还原》 指令集是什么?表面上看它是一套指令的集合。集合的意思...

  • java指令集

    指令列表 | 指令码 | 助记符 | 操作数|说明 || --- | --- | --- || 0x00 | no...

  • JVM部分

    JVM 指令集整理 知其然知其所以然程序员必备利器——Java程序性能分析工具Java VisualVM(Visu...

  • Java虚拟机原理

    什么是Java虚拟机 你可以把Java虚拟机看作一个抽象的计算机,它有各种指令集和各种运行时数据区域。它是整个Ja...

  • Java JVM运行机制

    一:Jvm基础概念 Java虚拟机(Jvm)是可运行Java代码的假想计算机 Java虚拟机包括一套字节码指令集、...

网友评论

      本文标题:看 java 指令集做了什么

      本文链接:https://www.haomeiwen.com/subject/oiciyxtx.html