asm 中 Opcodes.F_FULL,F_APPEND ,F_SAME,F_CHOP含义

发布于 2022-09-13 00:33:25 字数 506 浏览 19 评论 0

我在学习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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文