gpt4 book ai didi

java - 了解为简单 java 类生成的字节码

转载 作者:行者123 更新时间:2023-12-01 10:10:09 27 4
gpt4 key购买 nike

我正在关注这个blog研究java到字节码&我已经为这个SimpleClass生成了字节码。

public class SimpleClass {

public int simpleF = 5;


}

我理解的字节码位置如下

  • 0 代表“这个”
  • 1 用于调用父类(super class)的构造函数目的。
  • 4 -- ?
  • 5 表示值 5
  • 6 从堆栈中弹出并将 5 分配给变量。

但我不明白位置 4 处的 aload_0 及其用途?

// Compiled from SimpleClass.java (version 1.6 : 50.0, super bit)
public class SimpleClass {

// Field descriptor #6 I
public int simpleF;

// Method descriptor #8 ()V
// Stack: 2, Locals: 1
public SimpleClass();
0 aload_0 [this]
1 invokespecial java.lang.Object() [10]
4 aload_0 [this]
5 iconst_5
6 putfield SimpleClass.simpleF : int [12]
9 return
Line numbers:
[pc: 0, line: 2]
[pc: 4, line: 4]
[pc: 9, line: 2]
Local variable table:
[pc: 0, pc: 10] local: this index: 0 type: SimpleClass
}

最佳答案

aload_0是否将设置本地非静态字段的语句中当前类的引用压入堆栈simpleF至 5。

[this.]simpleF=5
<小时/>

来自http://cs.au.dk/~mis/dOvs/jvmspec/ref-putfield.html

putfield sets the value of the field identified by <field-spec> in objectref (a reference to an object) to the single or double word value on the operand stack.

关于java - 了解为简单 java 类生成的字节码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36167758/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com