是否有任何文件或特定文本描述了生成功能相同但语义不同的计算机程序的理论基础?理想情况下,我正在寻找的文档涵盖了从实际编程语言的离散指令中导出符号指令的基础,与KLEE一样。
如果在确定两段代码是否共享某些等效连续执行状态的子集(即状态@指令指针和同期全局变量,堆栈和堆值)时存在复杂性的下限,我也很好奇。
答案 0 :(得分:3)
对于您的第一个问题,您可能对polymorphic code的研究感兴趣,{{3}}是您描述的功能的一部分。
对于第二个问题:
确定两段代码在功能上是否相同与暂停问题一样难,这是一个众所周知的不可判定的问题 - 没有计算机可以解决它对于所有问题的实例。
要看到这一点,请注意我们可以通过询问要测试的程序是否具有与非暂停程序for(;;);
相同的功能来解决暂停问题。我们忽略了副作用,所以我们不关心程序是否在此期间做了其他事情 - 我们关心的是它是否最终完成。