asm 中 Opcodes.F_FULL,F_APPEND ,F_SAME,F_CHOP含义
我在学习java的asm框架,并在idea中找到一个叫做Byte Code Analyzer的插件,可以用其查看class文件,我发现每一个if语句块结束就会有F_APPEND 或者 F_SAME。for循环的循环体开始有F_FULL,整个循环结束有F_CHOP。 我目前的理解是,代码块结束时需要通过这几个操作来确定当前帧中所有本地变量的类型。
我查看Chapter 4. The class File Format,还是没有看懂same_frame和chop_frame的区别,感觉是一个含义。而且即使是chop_frame,局部变量数不同,也是不同的fram_type。
我发现有时候是F_APPEND ,有时候是 F_FULL,这个好像和本地变量的数量相关,小于等于3的时候是F_APPEND ,大于3的话是F_FULL。看了好久,但感觉理解的还是一塌糊涂。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论