V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lqw3030
V2EX  ›  Java

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

  •  1
     
  •   lqw3030 · 2020-04-21 21:50:27 +08:00 · 1950 次点击
    这是一个创建于 1466 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 前几天咨询了大家字节码相关问题

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

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

    • 多谢了

    • 类文件

    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 条回复    2020-04-22 15:50:00 +08:00
    penguinWWY
        1
    penguinWWY  
       2020-04-22 00:43:12 +08:00   ❤️ 1
    你用的字节码查看工具把 LineNumberTable 和 LocalVariableTable 这两个表的内容解析了一下
    L0 、L1 应该表示一个 label,也就是一个标签
    `LINENUMBER ` 声明这个标签对应的行号
    `LOCALVARIABLE` 表示局部变量的名字、类型
    lqw3030
        2
    lqw3030  
    OP
       2020-04-22 15:50:00 +08:00
    @penguinWWY 感谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2899 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 03:15 · PVG 11:15 · LAX 20:15 · JFK 23:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.