前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JVM-编译过程学习

JVM-编译过程学习

作者头像
晓果冻
发布2022-06-17 15:18:55
2810
发布2022-06-17 15:18:55
举报

JVM-编译过程学习

词法分析
  • 将源代码的字符流转变为标记集合。关键字、变量名、字面量、运算符都可以称为标记。
    • int a = b+2; int、a、=、b、+、26个标记。
  • 生成Token流,例如上面的int就是一个Token,不可再拆分。
语法分析
  • 根据Token序列构造抽象语法树。
  • 语法树的每一个节点都代表着程序代码中的一个语法结构
    • 如:包、类型、修饰符、运算符、接口、返回值甚至代码注释都可以是一个语法结构。
填充符号表
  • 由一组符号地址和符号信息构成的表格叫做符号表。(可以用哈希表的K-V来理解)。
    • 在语义分析阶段:符号表所登记的内容将用于语义检查和产生中间代码。
    • 在目标代码生成阶段:当对符号名进行地址分配时,符号表是地址分配的依据。
语义分析
  • 对语法树结构上的源程序进行上下文有关性质的审查。
  • 解语法糖。
字节码生成
  • 把前面各个步骤所生成的信息(语法树、符号表)转化成字节码写到磁盘中,编译器还进行了少量的代码添加和转换工作。
  • 如变量初始化、调用父类的实例构造器、字符串的+操作替换为StringBuffer和StringBuilder等操作。
  • 最后由com.tools.javac.jvm.ClassWriter类的writeClass()方法输出字节码,生成最终的Class文件。
语法糖
自动装箱、拆箱
遍历循环
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JVM-编译过程学习
    • 词法分析
      • 语法分析
        • 填充符号表
          • 语义分析
            • 字节码生成
              • 语法糖
                • 自动装箱、拆箱
                • 遍历循环
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档