翻译验证方法:确保源代码到目标代码转换的正确性

0 下载量 51 浏览量 更新于2024-06-17 收藏 342KB PDF 举报
"这篇论文探讨了高级源代码到目标代码转换验证的方法,强调了在确保系统安全性中的重要性。文章提出了翻译验证器的概念,作为替代传统编译器验证的手段,尤其是在处理优化编译器时。作者区分了结构保持优化和结构修改优化,并介绍了如何通过计算归纳和专门的‘元规则’在源代码与目标代码间建立模拟关系。此外,他们还描述了一个名为‘双氢-64|’的原型翻译验证器,它能自动生成验证条件,应用于SGIPro-64编译器的全局优化。该研究受到多个机构的资助,并在开放访问许可下发布。" 在软件开发中,编译器是将高级编程语言转化为机器可执行的目标代码的关键工具。然而,编译器的正确性和优化过程的验证是极具挑战性的,尤其是对于那些包含复杂优化的编译器。传统的形式化验证方法通常专注于验证高级表示的正确性,但并不直接保证目标代码在实际硬件上的行为。为了弥补这一差距,文章提出了一种翻译验证方法,这种方法不是验证整个编译器,而是验证每一次编译运行后生成的目标代码是否正确地代表了源代码。 翻译验证器的核心思想是在编译过程中插入一个验证工具,该工具能够在每次编译后检查生成的目标代码,确保其符合源代码的规范。对于结构保持优化(例如,变量重命名),研究人员利用计算归纳建立源代码和目标代码之间的等价关系。而对于结构修改优化(如循环展开或代码重组),他们开发了特定的“元规则”来处理这些变化并维护等价性。 文章中提到的“双氢-64|”原型翻译验证器展示了这种方法的实际应用,它能够自动化生成验证条件,应用于SGIPro-64编译器的全局优化阶段。这表明,翻译验证方法可以作为一种有效手段,确保经过优化的代码仍然保留了原始源代码的语义。 这项工作对于提高编译器的安全性和可靠性具有重要意义,特别是在安全关键系统中,如航空航天、医疗设备和金融系统,其中错误的编译可能导致灾难性后果。通过提供一种更直接验证编译结果的方法,翻译验证技术有望增强软件开发过程的信任度,并推动形式化验证技术在工业实践中的应用。