侧边栏壁纸
博主头像
晓果冻博主等级

行动起来,活在当下

  • 累计撰写 135 篇文章
  • 累计创建 16 个标签
  • 累计收到 91 条评论

目 录CONTENT

文章目录

JVM-编译过程学习

Administrator
2022-04-06 / 0 评论 / 2 点赞 / 356 阅读 / 1384 字

JVM-编译过程学习

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

语法糖

自动装箱、拆箱
遍历循环

image-20220406181543891

2
JVM

评论区