如何解决使用静态字节码分析来确定通过给定方法的所有可能路径是否是尝试解决停止问题的一种方法?
| 是否有可能通过读取给定方法的字节码来确定所有可能的执行路径,或者这等同于尝试解决暂停问题?如果无法解决停机问题,那么我可以进行静态分析多远而又不尝试解决停机问题? 相关问题:“在给定的二进制文件中查找所有代码等效于停止问题。”真?解决方法
是的,这很容易解决停止问题。考虑以下if语句:
如果(TuringMachine(x))则转到fred;
好吧,真的有可能去弗雷德吗?如果您可以分析图灵机,则只能回答此问题。
这有一组等效的字节码。
现在,如果唯一的问题是确定所有可能的路径,并且您不在乎是否得到一些误报,答案是否定的。请考虑以下程序:
if (false) then x else y ;
可能的路径:eval(false); do x和eval(false); do y是完整的枚举。
您必须将循环特别地视为零,一,二或某个最大有界迭代次数,因此您需要一个可计算的答案。如果循环可以永远重复,那么您的某些路径将是无限长的,您将无法使用算法和有限的时间来报告它们:-{
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。