日期:2014-05-20  浏览次数:20987 次

如何看懂java class文件中的指定?它是汇编语言吗?
我的JAVA源代码是:
Java code

public class MyJava {
    public static void main(String[] args) {
        int i = 3;
        System.out.println(i);
    }
}



用javap -c MyJava命令处理后是:
Java code

Compiled from "MyJava.java"
public class MyJava extends java.lang.Object{
public MyJava();
  Code:
   0:    aload_0
   1:    invokespecial    #1; //Method java/lang/Object."<init>":()V
   4:    return

public static void main(java.lang.String[]);
  Code:
   0:    iconst_3
   1:    istore_1
   2:    getstatic    #2; //Field java/lang/System.out:Ljava/io/PrintStream;
   5:    iload_1
   6:    invokevirtual    #3; //Method java/io/PrintStream.println:(I)V
   9:    return

}




比如iconst_3,istore_1等,这些指令是什么语句?它是汇编语言吗?

------解决方案--------------------
不是汇编语言,是伪代码指令(和汇编语言相似),JVM就是解析这些指令,把它翻译成相应的二进制机器码来执行
LZ想了解更多,可以看看些深入JVM的资料