小编Gia*_* U.的帖子

javap输出中缺少指令编号

每次我尝试理解已编译的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        
}
Run Code Online (Sandbox Code Playgroud)

如您所见,构造函数中的指令3和4以及main方法中的一些指令都缺失.

有人知道为什么这些指令编号丢失了吗?是否有一些由于某种原因隐藏的字节码指令?

java bytecode mnemonics disassembly javap

3
推荐指数
1
解决办法
233
查看次数

标签 统计

bytecode ×1

disassembly ×1

java ×1

javap ×1

mnemonics ×1