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

gg22g2
  • 122

我在学习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。看了好久,但感觉理解的还是一塌糊涂。

回复
阅读 211
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏