在dalvik字节码中静态检测无条件跳转目标

时间:2013-10-25 08:06:55

标签: java android compiler-construction dalvik vm-implementation

在x86二进制文件中,我们有时会发现jmp %eax之类的语句,其中jmp目标eax是在运行时计算的。这增加了构建静态控制流图的复杂性。我的问题是dalvik字节码中是否有类似的指令呢?我的意思是有没有只能在运行时计算的分支目标?

我听说在dalvik中这是确定性的,这意味着分支目标不是在运行时确定的,而是编译器存储信息。

期待您的反馈,如果可能,请参考。

1 个答案:

答案 0 :(得分:0)

不,Dalivk 字节代码仅允许固定跳转。没有相应的跳转寄存器;所有跳跃都是精确的偏移量。我没有给你一个明确的参考资料,但昨天我确实读过this presentation,明确提到了这个限制。

上面链接的演示文稿还声称Dalvik对本机代码执行有一些支持,我认为它允许目标架构支持的任何类型的分支。但这与字节码没什么关系。