美文网首页
jvm 指令集代码

jvm 指令集代码

作者: sunny4handsome | 来源:发表于2017-12-10 16:18 被阅读0次

本文分为3个部分,第一个部分列出常用的jvm指令,每一个指令基本都有几个类似的指令,看名字就知道了,比如像iconst、lconst、fconst、dconst这些主要是针对不同的类型(int、long、float、double),将对应类型的值push到栈顶,其他指令类似,所以基本指令就给出一个例子,其他的联想一个就好,第二部分,给出一小段代码,并给出指令集并详细给出每一行代码的解释。第三部给出jvm全部的指令集,方便查询

jvm基本指令

指令 含义
iconst_1 int型常量值1进栈
bipush 将一个byte型常量值推送至栈顶
iload_1 第二个int型局部变量进栈,从0开始计数
istore_1 将栈顶int型数值存入第二个局部变量,从0开始计数
iadd 栈顶两int型数值相加,并且结果进栈
return 当前方法返回void
getstatic 获取指定类的静态域,并将其值压入栈顶
putstatic 为指定的类的静态域赋值
invokevirtual 调用实例方法
invokespecial 调用超类构造方法、实例初始化方法、私有方法
invokestatic 调用静态方法
invokeinterface 调用接口方法
new 创建一个对象,并且其引用进栈
newarray 创建一个基本类型数组,并且其引用进栈

具体分析

一个简单的code如下,以此分析每一行代码的指令

publicstatic void main(String[] args) {  
inta = 1;  
intb = 9;  
intc = a+b;  
System.out.println(c);  
System.out.println("HelloWorld");  
}  

public static void main(java.lang.String[]);
Code:

jvm基本指令

指令 含义
0: iconst_1 //将int型1推送到栈顶
1: istore_1 //将栈顶元素存入第二个本地变量
2: bipush 9 //将int型9推送到栈顶
4: istore_2 //将栈顶元素存入第三个本地变量
5: iload_1 //将第二个int型数值推送到栈顶
6: iload_2 //将第三个int型数值推送到栈顶
7: iadd //将栈顶两个int数值相加然后推入栈顶
8: istore_3 //将栈顶int型数值存入第四个本地变量
9: getstatic #16 // Field java/lang/System.out:Ljava/io/PrintStream; //获取指定类的静态域,并将其压入栈顶
12: iload_3 //将第四个int型数值推送到栈顶
13: invokevirtual #22 // Method java/io/PrintStream.println:(I)V //调用实例方法
16: getstatic #16 // Field java/lang/System.out:Ljava/io/PrintStream; //获取指定类的静态域,并将其压入栈顶
19: ldc #28 // String Hello World //将int、float、String类型常量从常量池中推送带栈顶
21: invokevirtual #30 // Method java/io/PrintStream.println:(Ljava/lang/String;)V //调用实例方法
24: return //从当前方法返回void

全部Jvm指令

参见:

我的另一篇博客

相关文章

  • jvm 指令集代码

    本文分为3个部分,第一个部分列出常用的jvm指令,每一个指令基本都有几个类似的指令,看名字就知道了,比如像icon...

  • Java JVM运行机制

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

  • java性能优化--代码缓存优化

    代码缓存 JVM在编译代码后,会在代码缓存当中保存编译后的汇编语言指令集。而代码缓存的大小是固定的,换句话说,jv...

  • 58天高效突击:JVM+微服务+Spring全家桶+分布式架构,

    面试核心考点:JVM JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一...

  • JVM

    JVM (1) 基本概念:JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈...

  • 字节大神教你如何从三大模块熟知Jvm,让你不再担心面试官的怼问

    大家都知道JVM的中文名称叫Java虚拟机,JVM是可运行 Java 代码的假想计算机 ,它包括一套字节码指令集、...

  • jvm

    什么是JVM JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回...

  • JVM超详细讲解-面试必备

    什么是JVM JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回...

  • JVM

    1. JVM基本概念 JVM是可运行Java代码的假象计算机,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾...

  • JVM运行原理,jvm内存结构与垃圾回收机制

    一 jvm运行原理 1.JVM是可运行java代码的假想计算机,包括一套字节码指令集,一组寄存器,一个栈,一个垃圾...

网友评论

      本文标题:jvm 指令集代码

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