程序分析的目标是在不运行程序的情况下静态地预测程序的运行时属性。程序分析的语义方法起源于Cousot对抽象解释的开创性工作:从程序执行的正式数学模型开始语义然后用伽罗瓦连接(或类似的方法)将其近似化为一个基于运行时属性格的可计算模型,该模型考虑了所有可能的执行路径。每个程序产生一系列方程,然后典型地通过不动点迭代来解决。
因此,基于语义的程序分析需要(1)从“友好的”语义开始;设计一个“相宜”的运行时属性格;(3)将一组“相关”方程与程序相关联;(4)有效地解出这些方程。
每一项要求都充满了困难:
这些问题的有效答案以前就已经找到了,但似乎每一个都是绝招。
在下面的论文中,大卫·范霍恩和马修·梅特对简单和有效进行了彻底的押注:
我们发现Van Horn和Might的科学贡献是如何通过抽象机器来开发高阶程序分析的有效教程。
他们的方法非常有用:它使程序分析设计人员能够从现有的抽象机器开始,而不是从专门的、量身定做的机器开始,然后将其统一地分解为抽象友好的语义工件。他们的方法是有效的:它可以扩展到各种计算情况,包括实际的编程语言构造,例如异常。他们的方法是结构化的和通用的:它使程序分析设计师专注于他们的分析的具体内容,这仍然是困难的——他们的运行时属性格,他们的扩展操作符,如何表示他们的方程,以及如何有效地解决它们,而不是被迫执行一个又一个全球性的绝招,从头开始,每一次。
因此,我们发现Van Horn和Might的科学贡献在概念和实践上是一个重要的垫脚石,同时也是如何通过抽象机器来开发高阶程序分析的有效教程。我们也发现他们的文章读起来很有趣。
©2011 acm 0001-0782/11/0900 $10.00
如果您不是为了盈利或商业利益而制作或分发本作品的部分或全部,并在第一页注明本通知和完整引用,则允许您免费制作本作品的部分或全部数字或纸质副本,供个人或课堂使用。本作品的组成部分必须由ACM以外的其他人享有版权。信用文摘是允许的。以其他方式复制、重新发布、在服务器上发布或重新分发到列表,需要事先获得特定的许可和/或费用。请求发布的权限permissions@acm.org或传真(212)869-0481。
数字图书馆是由计算机协会出版的。版权所有©2011 ACM股份有限公司
没有发现记录