×

利用编译器中间表示进行多语言和跨语言验证。 (英语) Zbl 1451.68071号

Beyer,Dirk(编辑)等人,《验证、模型检查和抽象解释》。第21届国际会议,VMCAI 2020,美国洛杉矶新奥尔良,2020年1月16-21日。诉讼程序。查姆:斯普林格。莱克特。注释计算。科学。11990, 90-111 (2020).
摘要:现在的开发人员经常使用许多具有不同特征和权衡的编程语言。不幸的是,从头开始为新语言实现软件验证器是一项庞大而繁琐的任务,需要多个领域的专家知识,如编译器、验证和约束求解。因此,只有一小部分使用的语言有现成的软件验证器来帮助开发正确的程序。在过去十年中,在实现软件验证器时,有一种趋势是利用流行的编译器中间表示(IR),例如LLVM-IR。处理IR保证了开箱即用的多语言和跨语言验证,因为至少在理论上,验证器应该能够处理任何可以编译到IR中的编程语言(及其组合)的程序。然而,在实践中,据我们所知,没有人探索过这种新语言集成的可行性和易用性。在本文中,我们提供了一个将新语言支持添加到基于IR的验证工具流中的过程。使用我们的过程,我们扩展了SMACK验证器,并为其他6种语言提供了原型支持。我们通过几个案例研究来评估扩展的质量,并详细描述了我们的经验,以指导该领域的未来工作。
关于整个系列,请参见[Zbl 1429.68006号].

MSC公司:

68N20型 编译与解释理论
68甲15 编程语言理论
60年第68季度 规范和验证(程序逻辑、模型检查等)
PDF格式BibTeX公司 XML格式引用
全文: 内政部