xyooyx
V2EX  ›  Java

看了下《深入虚拟机》相关章节,还是存在一些字节码的疑惑

  •  1
     
  •   xyooyx · Apr 21, 2020 · 2496 views
    This topic created in 2233 days ago, the information mentioned may be changed or developed.
    • 前几天咨询了大家字节码相关问题

    • 看了一遍《深入理解虚拟机》,部分指令和语法是明白了,但是依然存在一些疑惑

    • 在下面字节码中标出了,麻烦懂的朋友指点下

    • 多谢了

    • 类文件

    package core.object_create;
    
    public class ObjectTest {
        private String name="v2";
    
        public void hi(){
            int i =777;
        }
    }
    
    
    • 字节码
    // class version 56.0 (56)
    // access flags 0x21
    public class core/object_create/ObjectTest {
    
      // compiled from: ObjectTest.java
    
      // access flags 0x2
      private Ljava/lang/String; name
    
      // access flags 0x1
      public <init>()V
       L0 //这里在申明什么
        LINENUMBER 3 L0  //这个语法是啥意思
        ALOAD 0
        INVOKESPECIAL java/lang/Object.<init> ()V
       L1
        LINENUMBER 4 L1
        ALOAD 0
        LDC "v2"
        PUTFIELD core/object_create/ObjectTest.name : Ljava/lang/String;
        RETURN
       L2
        LOCALVARIABLE this Lcore/object_create/ObjectTest; L0 L2 0
        MAXSTACK = 2
        MAXLOCALS = 1
    
      // access flags 0x1
      public hi()V
       L0
        LINENUMBER 7 L0
        SIPUSH 777
        ISTORE 1
       L1
        LINENUMBER 8 L1
        RETURN
       L2
        LOCALVARIABLE this Lcore/object_create/ObjectTest; L0 L2 0   //这句
        LOCALVARIABLE i I L1 L2 1 //以及这句分别在申明什么
        MAXSTACK = 1
        MAXLOCALS = 2
    }
    
    
    2 replies    2020-04-22 15:50:00 +08:00
    penguinWWY
        1
    penguinWWY  
       Apr 22, 2020   ❤️ 1
    你用的字节码查看工具把 LineNumberTable 和 LocalVariableTable 这两个表的内容解析了一下
    L0 、L1 应该表示一个 label,也就是一个标签
    `LINENUMBER ` 声明这个标签对应的行号
    `LOCALVARIABLE` 表示局部变量的名字、类型
    xyooyx
        2
    xyooyx  
    OP
       Apr 22, 2020
    @penguinWWY 感谢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   962 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 20:22 · PVG 04:22 · LAX 13:22 · JFK 16:22
    ♥ Do have faith in what you're doing.