是否使用静态字节码分析来确定通过给定方法的所有可能路径尝试解决停机问题?

pla*_*ano 3 cil static-analysis bytecode

是否可以通过读取给定方法的字节码来确定所有可能的执行路径,还是等同于尝试解决暂停问题?如果它不能简化为停止问题,那么在不跨越试图解决停止问题的界限的情况下,我可以在多大程度上进行静态分析?

相关问题:"查找给定二进制文件中的所有代码等同于停止问题." 真?

Ira*_*ter 5

是的,这很容易相当于解决暂停问题.请考虑以下if语句:

if(TuringMachine(x))然后转到fred;

好的,真的可以转到弗雷德吗?如果您可以分析图灵机,则只能回答此问题.这有一组等效的字节码.

现在,如果唯一的问题是确定所有合理的路径,并且你不在乎是否得到一些误报,答案是否定的.请考虑以下程序:

if (false) then x else y ;
Run Code Online (Sandbox Code Playgroud)

可能的路径:eval(false); do x和eval(false); do y是完整的枚举.

你必须特别处理循环,作为零,一,二或某些最大有界迭代次数,你需要一个可计算的答案.如果一个循环可以永远重复,你的一些路径将无限长,你不能用算法和有限的时间报告它们: - {