Java—字节码文件解读

admin2024-05-15  1

原文

public class ClassIntrucation {
	public static void main(String[] args) {
		int i = 10;
		int j = i;
		j++;
		++j;
	}
}

查看字节码文件命令

 javap -c 字节码文件

例如:

javap -c ClassIntrucation

结果

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

  public static void main(java.lang.String[]);
    Code:
       0: bipush        10
       2: istore_1
       3: iload_1
       4: istore_2
       5: iinc          2, 1
       8: iinc          2, 1
      11: return
}

解读

第一个方法:

Java—字节码文件解读,第1张

这是类的构造方法,第一个先执行类的构造方法。具体内容不过多介绍。

第二个方法:

Java—字节码文件解读,第2张

这是main 方法,执行代码逻辑如下:

bipush    10             将字面量数字 10  压入操作数栈中。 

istore_1                   将操作数栈中的值弹栈放入局部变量表中的槽位1.

iload_1                     将局部变量表槽位1的值复制一份加载(压栈)操作栈中。

istore_2                    将操作数栈中的值弹栈放入局部变量表中的槽位2.

iinc          2,1         将局部变量表槽位2的值压栈操作数栈中,值加一,弹栈槽位2

iinc          2,1         将局部变量表槽位2的值压栈操作数栈中,值加一,弹栈槽位2

Java—字节码文件解读,第3张

解读 i++ 和 ++i

public class ClassIntrucation {
	public static void main(String[] args) {
		int i = 10;
		
		int j = i++;

		int k = ++i;
		
	}
}

 字节码解读

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

  public static void main(java.lang.String[]);
    Code:
       0: bipush        10
       2: istore_1
       3: iload_1
       4: iinc          1, 1
       7: istore_2
       8: iinc          1, 1
      11: iload_1
      12: istore_3
      13: return
}

槽位1 : i               槽位2:  j                    槽位3: k

Java—字节码文件解读,第4张

Java—字节码文件解读,第5张

1. 将槽位1 的值 取出压栈 到操作数栈中 ,值加一,弹栈到槽位1。

【11 + 1】 --> 【】   ++i;    i = 12;   

2. 将槽位1 的值 (12)复制一份到操作数栈中。   

【12】  

3. 操作数栈弹栈到槽位3.       

【】    k = 12;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!