javap -c 操作数栈 局部变量表执行过程

  1. javap -v T //主要用于查看类的详细结构,帮助理解类的组成和依赖关系。‌ 提供了详细的输出,包括类的版本信息、当前类所依赖的类、包名、访问权限、构造方法、实例字段和方法等详细信息。此外,它还可以显示内部类型签名、常量池中的类型以及字段和方法的相关信息。
  2. javap -c T.class //‌Java代码编译成字节码后的具体指令,以便理解代码的执行逻辑

java

public class T {
    public int computer() {
        int a = 2;
        int b = 3;
        int c = a + b;
        return c;
    }

    public static void main(String[] args) {
        T t = new T();
        t.computer();
    }
}

javap -c

E:\myproduct\target\test-classes>javap -c T.class >> hello.txt

iconst_2入栈的字节码指令
istore_1指令表示将弹出的元素放置在局部变量表第1个位置
iload_1表示将第1个局部变量压入操作数栈

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

  public int computer();
    Code:
       0: iconst_2
       1: istore_1
       2: iconst_3
       3: istore_2
       4: iload_1
       5: iload_2
       6: iadd
       7: istore_3
       8: iload_3
       9: ireturn

  public static void main(java.lang.String[]);
    Code:
       0: new           #2                  // class T
       3: dup
       4: invokespecial #3                  // Method "<init>":()V
       7: astore_1
       8: aload_1
       9: invokevirtual #4                  // Method computer:()I
      12: pop
      13: return
}

posted @ 2024-08-20 07:13  干饭达人GoodLucy  阅读(2)  评论(0编辑  收藏  举报