3

我想简化我的 asm 代码。到目前为止,我正在使用 Eclipse 中的字节码大纲来学习如何编写我的代码。由于我只看到带有调试信息的字节码,我真的不知道我可以安全地遗漏哪些内容,我希望由知识渊博的人快速回答,而不是自己测试每个可能的情况。

这些假设是真的吗?

  1. 我可以混合不同的风格,即使在同一个类或方法中(将没有调试信息的代码注入到有调试信息的方法中)
  2. visitLabel只需要作为跳转指令的目标,而不是围绕每条指令
  3. visitLineNumber可以省略(调试信息)
  4. visitLocalVariable可以省略(调试信息)

谢谢!

4

1 回答 1

2

您可以在没有调试信息的情况下编译代码以在字节码大纲视图中查看它,例如为此在 Eclipse 中使用单独的项目。

现在回答你的问题:

  1. 您可以将代码与调试混合使用,也可以不使用调试。请注意,在调试此类代码时,调试器不会显示调试信息中省略的变量。
  2. visitLabel 调用用于标记字节码中的任何位置,例如跳转指令的目标、异常处理程序范围和异常处理程序入口点的边界、局部变量和行号的范围、一些新引入的类型注释(即JSR308)等.
  3. visitLineNumber 生成有关主要由调试器使用的行号的信息,可以省略
  4. visitLocalVariable 生成有关主要由调试器使用的本地变量的信息,可以省略
于 2012-08-22T18:57:02.767 回答