Java .catchall是否用于在smali中表示Dalvik字节码的finally子句?

Java .catchall是否用于在smali中表示Dalvik字节码的finally子句?,java,android,smali,Java,Android,Smali,我注意到,当java代码中有finally子句时,总是会生成.catchall来标识finally块或使用.catchall标签内联它,但我还没有找到任何关于是这种情况还是更多解释的在线信息,有人知道吗 是的,finally块是生成.catchall的一种情况。然而,它也可以用于其他事情。例如,它也可以在同步方法的情况下生成,以确保释放锁 规范中记录了catch-all处理程序。具体地说,在编码项中包含的编码项catch处理程序项中 同样相关的是中的等效数据块。请参见例外表中的catch类型项。

我注意到,当java代码中有
finally
子句时,总是会生成
.catchall
来标识
finally
块或使用
.catchall
标签内联它,但我还没有找到任何关于是这种情况还是更多解释的在线信息,有人知道吗

是的,finally块是生成.catchall的一种情况。然而,它也可以用于其他事情。例如,它也可以在同步方法的情况下生成,以确保释放锁

规范中记录了catch-all处理程序。具体地说,在编码项中包含的编码项catch处理程序项中


同样相关的是中的等效数据块。请参见例外表中的catch类型项。

我认为您可能期望过高

您要问的是(实际上)davlik代码生成器/转换器的代码生成模式。根据我的经验,人们不会在封面下详细描述编译器/代码生成器的工作:

  • 这些行为不需要指定。事实上,一个规范可能会因为过度限制实现而造成伤害
  • 这样的文档编写和维护成本很高
  • 这样的文档几乎没有读者来证明费用的合理性
我建议您查看davlik翻译程序的源代码,看看它的实际功能。(尝试用grepping表示“catchall”…)



请注意,dex格式规范为您提供了输出“语言”及其含义。这限制了davlik翻译人员的能力,但它不会告诉您在所有情况下翻译人员实际要做什么。

也感谢您的评论和建议@JesysFreke我希望我能多次投票支持你的答案!文档确实帮助我通读了代码!再次感谢!链接是现在还是现在