我正在尝试设法java字节码.
我想识别java循环的进入和退出,但我发现循环的识别非常具有挑战性.我花了几个小时看ASM和开源反编译器(我认为他们必须一直解决这个问题)但是,我做得很短.
我正在扩充/扩展的工具是使用ASM,所以理想情况下我想知道如何通过ASM来检测java中不同循环结构的进入和退出.但是,我也欢迎建议一个好的开源解编译器,因为显然它们可以解决同样的问题.
我想总结而不是以类似的方式压缩运行长度编码,但是在嵌套意义上.
例如,我想:ABCBCABCBCDEEF成为:(2A(2BC))D(2E)F
我并不担心在两个相同的可能嵌套之间选择一个选项
ABBABBABBABA可以是(3ABB)ABA或A(3BBA)BA,它们具有相同的压缩长度,尽管具有不同的结构.
但是我确实希望选择最贪婪.例如:
ABCDABCDCDCDCD将选择(2ABCD)(3CD) - 原始符号中长度为6的小于ABCDAB(4CD),其在原始符号中长度为8.
在背景方面,我有一些重复的模式,我想总结一下.这样数据就更容易消化了.我不想破坏数据的逻辑顺序,因为它很重要.但是我想总结它,通过说,符号A次出现3次,其次是符号XYZ 20次出现等等,这可以用嵌套的方式在视觉上显示.
欢迎的想法.