java编译器源码解析-语义分析-生成字节码
但具体内容在ClassWriter.writeClass()完成.其中ClassWriter.writeClassFile()负责输出字节码。
要从AST生成字节码了,那么还需要完成一次转换,就是把AST的节点转换成可操作的实体Item。
com.sun.tools.javac.jvm.Items.Item还有很多子类,分别对应的是字节码可操作的实体,比如本地变量、字面量、方法、表达式等,
每个Item都支持一套标准的操作,能帮助生成字节码,最常用的方法load()、store()、invoke()、coerce()
load():生成把当前Item加载到栈的字节码
store():生成从栈顶保存到该 Item 的字节码
invoke():生成调用该Item对应的方法的字节码。
coerce():强制类型转换。
另外需要注意的是com.sun.tools.javac.jvm.Code类,它里面存放了生成各种字节码的指令的方法emitXXX(),所有jvm虚拟机的指令都能在这里找到。 com.sun.tools.javac.jvm.ClassWriter负责输出字节码
最后生成的字节码保存在 MethodSymbol 的 code 属性中。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
2021-04-15 TLPI读书笔记第18章-目录与链接3
2021-04-15 TLPI读书笔记第18章-目录与链接2
2021-04-15 TLPI读书笔记第18章-目录与链接1
2021-04-15 TLPI读书笔记第16章-扩展属性