paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Get Rid of Inline Assembly through Verification-Oriented Lifting

通过面向验证的提升消除内联汇编
ASE 2019 34th IEEE/ACM International Conference on Automated Software Engineering (ASE)2019匹配度 3/10 · 论文属于程序验证与静态分析方向,将内联汇编转换为可验证 C 代码以复用 C 分析器,兼具工程实现和真实代码实验;但未涉及 LLM/Agent、浮点程序分析或贝叶斯程序分析,与用户当前关注的核心交叉问题不直接匹配。引用 1 inbox
Frederic Recoules, Sebastien Bardin, Richard Bonichon, Laurent Mounier, Marie-Laure Potet
crossref: 2026-09-12

AI 速览

一句话:提出首个自动化、通用、可信的验证友好型 lifting 技术,将内联汇编转换为可验证的等价 C 代码。

形式化方法在安全关键嵌入式软件中已获成功,但向非关键软件推广时,C 程序员常使用的内联汇编会令现有 C 分析器失效。本文提出 TINA,首个自动化、通用、验证友好且可信的 lifting 技术,将内联汇编转换为语义等价的 C 代码,使其可被现有 C 形式分析器直接处理,从而复用成熟的验证工具链。方法强调对真实内联汇编片段的语义保持转换与验证适配。作者在真实世界代码(包括 GMP 和 ffmpeg)上进行了广泛实验,结果表明 TINA 可行且带来实际收益。

问题
内联汇编广泛用于底层优化和系统原语,但会破坏为 C 开发的形式分析器,使含内联汇编的代码难以被有效验证。
方法
TINA 自动、通用、验证友好且可信地将内联汇编 lifting 为语义等价的 C 代码,以便复用现有 C 分析器进行验证。
评估
在真实世界代码(如 GMP、ffmpeg)上进行广泛实验,验证该技术的可行性及其带来的收益。
原文摘要(Abstract)

Formal methods for software development have made great strides in the last two decades, to the point that their application in safety-critical embedded software is an undeniable success. Their extension to non-critical software is one of the notable forthcoming challenges. For example, C programmers regularly use inline assembly for low-level optimizations and system primitives. This usually results in rendering state-of-the-art formal analyzers developed for C ineffective. We thus propose TINA, the first automated, generic, verification-friendly and trustworthy lifting technique turning inline assembly into semantically equivalent C code amenable to verification, in order to take advantage of existing C analyzers. Extensive experiments on real-world code (including GMP and ffmpeg) show the feasibility and benefits of TINA.

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@inproceedings{paperbot5218,
  title = {Get Rid of Inline Assembly through Verification-Oriented Lifting},
  author = {Frederic Recoules and Sebastien Bardin and Richard Bonichon and Laurent Mounier and Marie-Laure Potet},
  booktitle = {ASE},
  year = {2019},
  doi = {10.1109/ase.2019.00060}
}