【发布时间】:2014-03-21 16:20:51
【问题描述】:
每次我尝试理解编译后的 Java 文件的反汇编代码时,我都想知道为什么缺少一些指令号。
一个小例子:
我反汇编 ($ javap -c HelloWorld) 一个简单的 HelloWorld 类。这是输出:
Compiled from "HelloWorld.java"
public class HelloWorld {
public HelloWorld();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #3 // String Hello World!
5: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: return
}
如您所见,构造函数中的指令3和4以及main方法中的一些指令都丢失了。
有人知道为什么缺少这些指令编号吗?是否有一些字节码指令由于某种原因被隐藏了?
【问题讨论】:
标签: java bytecode disassembly mnemonics javap