在x86二进制文件中,我们有时会发现jmp %eax
之类的语句,其中jmp
目标eax
是在运行时计算的。这增加了构建静态控制流图的复杂性。我的问题是dalvik字节码中是否有类似的指令呢?我的意思是有没有只能在运行时计算的分支目标?
我听说在dalvik中这是确定性的,这意味着分支目标不是在运行时确定的,而是编译器存储信息。
期待您的反馈,如果可能,请参考。
答案 0 :(得分:0)
不,Dalivk 字节代码仅允许固定跳转。没有相应的跳转寄存器;所有跳跃都是精确的偏移量。我没有给你一个明确的参考资料,但昨天我确实读过this presentation,明确提到了这个限制。
上面链接的演示文稿还声称Dalvik对本机代码执行有一些支持,我认为它允许目标架构支持的任何类型的分支。但这与字节码没什么关系。