代码改变世界

javap(反汇编命令)

2017-12-27 16:49  faunjoe88  阅读(438)  评论(0编辑  收藏  举报

用法: javap <options> <classes>

其中, 可能的选项包括:

  -help  --help  -?        输出此用法消息

  -version                 版本信息

  -v  -verbose             输出附加信息

  -l                       输出行号和本地变量表

  -public                  仅显示公共类和成员

  -protected               显示受保护的/公共类和成员

  -package                 显示程序包/受保护的/公共类

                           和成员 (默认)

  -p  -private             显示所有类和成员

  -c                       对代码进行反汇编

  -s                       输出内部类型签名

  -sysinfo                 显示正在处理的类的

                           系统信息 (路径, 大小, 日期, MD5 散列)

  -constants               显示最终常量

  -classpath <path>        指定查找用户类文件的位置

  -cp <path>               指定查找用户类文件的位置

  -bootclasspath <path>    覆盖引导类文件的位置

 

public class TestMain {
    public static void main(String[] args){
        short a = 4;
        int b = 5;
        a+=b;
        
        System.out.println(a);
    }
}

javac TestMain.java

javap -c -l TestMain

www:faj faunjoe$ javap -c -l TestMain
警告: 二进制文件TestMain包含com.faj.TestMain
Compiled from "TestMain.java"
public class com.faj.TestMain {
  public com.faj.TestMain();
    Code:
       0: aload_0
       1: invokespecial #1                  // Method java/lang/Object."<init>":()V
       4: return
    LineNumberTable:
      line 7: 0

  public static void main(java.lang.String[]);
    Code:
       0: iconst_4
       1: istore_1
       2: iconst_5
       3: istore_2
       4: iload_1
       5: iload_2
       6: iadd
       7: i2s
       8: istore_1
       9: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
      12: iload_1
      13: invokevirtual #3                  // Method java/io/PrintStream.println:(I)V
      16: return
    LineNumberTable:
      line 9: 0
      line 10: 2
      line 11: 4
      line 14: 9
      line 15: 16
}