跳到主要内容
研究文章

规范化验证程序转换的LLVM中间表示

出版:2012年1月25日 出版历史记录
  • 获取引文警报
  • 摘要

    本文提出了Vellvm(verified LLVM),这是一个用于对LLVM的中间表示和对其进行操作的转换中所表示的程序进行推理的框架。Vellmm提供了LLVM中间表示、类型系统及其SSA形式属性的机械化形式语义。该框架是使用Coq交互式定理证明器构建的。它包括多种操作语义,并证明了它们之间的关系,以促进不同的推理风格和证明技术。
    为了验证Vellvm的设计,我们从Coq形式语义中提取了一个解释器,该解释器可以执行LLVM测试套件中的程序,从而与LLVM参考实现进行比较。为了证明Vellvm的实用性,我们形式化并验证了一个先前提出的转换,该转换加强了C程序对空间内存安全违规的防范。Vellvm的工具允许我们提取一个新的、经过验证的转换过程实现,该转换过程插入到实际的LLVM基础设施中;它的性能与未经验证的ad-hoc原版相比具有竞争力。

    补充材料

    MP4文件 (popl_7a_1.mp4)

    工具书类

    [1]
    E.Alkassar和M.A.Hillebrand。设备驱动程序的正式功能验证。2008年VSTTE:第二届验证软件国际会议论文集:理论、工具、实验。
    [2]
    A.W.Appel公司。基础校对代码。2001年,第16届IEEE计算机科学逻辑研讨会论文集。
    [3]
    A.W.Appel公司。已验证软件工具链。《2011年第20届欧洲编程语言和系统会议论文集》(ESOP’11:Proceedings of the 20th European Conference on Programming Languages and Systems)。
    [4]
    B.Aydemir、A.Charguéraud、B.C.Pierce、R.Pollack和S.Weirich。工程形式元理论。2008年POPL:第35届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录。
    [5]
    N.Benton和N.Tabarau。将函数类型编译为低级命令式代码的关系规范。2009年TLDI:第四届语言设计与实现类型国际研讨会论文集。
    [6]
    S.Blazy、B.Robillard和A.W.Appel。合并图形-颜色寄存器分配的形式验证。《2010年第19届欧洲编程语言和系统会议记录》(ESOP’10:Proceedings of the 19th European Conference on Programming Languages and Systems,2010)。
    [7]
    J.Chen、D.Wu、A.W.Appel和H.Fang。后端优化的可靠TAL。在PLDI’03:ACM SIGPLAN 2003年编程语言设计和实现会议记录,2003年。
    [8]
    A.Chlipala。一种用于不纯正函数语言的经过验证的编译器。2010年,第37届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集。
    [9]
    A.Chlipala。从lambda演算到汇编语言的认证类型保护编译器。2007年PLDI:2007年ACM SIGPLAN编程语言设计与实现会议记录。
    [10]
    Coq Proof Assistant参考手册(8.3pl1版)。Coq开发团队,2011年。
    [11]
    K.Crary。走向一种基本的类型汇编语言。2003年POPL'03:第30届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录。
    [12]
    K.Crary和R.Harper。标准毫升(α释放)的机械化定义,2009年。http://www.cs.cmu.edu/crary/papers/2009/mldef-alpha.tar.gz。
    [13]
    R.Cytron、J.Ferrante、B.K.Rosen、M.N.Wegman和F.K.Zadeck。高效计算静态单赋值表和控制依赖图。ACM事务处理。程序。语言系统。,13: 451--490, 1991.
    [14]
    G.A.基达尔。全局程序优化的统一方法。《POPL’73:1973年第一届ACM SIGACT-SIGPLAN编程语言原理年度研讨会论文集》。
    [15]
    母鸡}KN04G。Klein、T.Nipkow和T.U.München。针对类Java语言、虚拟机和编译器的机器选择模型。ACM事务处理。程序。语言系统。,28: 619--695, 2006.
    [16]
    C.Lattner和V.Adve。LLVM:用于终身程序分析和转换的编译框架。在CGO’04:代码生成和优化国际研讨会论文集:反馈定向和运行时优化,2004年。
    [17]
    S.Lerner、T.Millstein、E.Rice和C.Chambers。通过本地规则进行数据流分析和转换的自动化稳健性证明。2005年POPL:第32届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集。
    [18]
    X.勒罗伊。经过正式验证的编译器后端。《自动推理杂志》,43(4):363-4462009。
    [19]
    LLVM参考手册(2.6版)。LLVM开发团队,2010年。http://llvm.org/releases/2.6/docs/LangRef.html。
    [20]
    V.S.Menon、N.Glew、B.R.Murphy、A.McCreight、T.Shpeisman、A.-R Adl-Tabatabai和L.Petersen。用于积极编译器优化的可验证SSA程序表示。在POPL'06:2006年第33届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集。
    [21]
    S.Nagarakatte、J.Zhao、M.M.K.Martin和S.Zdancewic。SoftBound:C的高度兼容和完整空间内存安全。2009年PLDI:2009年ACM SIGPLAN编程语言设计与实现会议论文集。
    [22]
    G.C.墓穴。优化编译器的翻译验证。在PLDI’00:2000年ACM SIGPLAN 2000编程语言设计与实现会议记录。
    [23]
    NIST Juliet C/C++测试套件。NIST,2010年。http://samate.nist.gov/SRD/testCases/suites/Juliet-2010--12.c.cpp.zip。
    [24]
    M.尼塔和D.格罗斯曼。位级C代码的自动转换,以支持多个等效的数据布局。2008年CC'08:第17届编译器构造国际会议论文集。
    [25]
    M.Nita、D.Grossman和C.Chambers。一种依赖于平台的底层软件理论。2008年POPL:第35届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录。
    [26]
    A.Pnueli、M.Siegel和E.Singerman。翻译验证。1998年,《TACAS’98:第四届系统构建和分析工具和算法国际会议论文集》。
    [27]
    P.Sewell、F.Zappa Nardelli、S.Owens、G.Peskine、T.Ridge、S.Sarkar和R.Strnisa。Ott:对工作语义的有效工具支持。2007年ICFP:第九届ACM SIGPLAN函数编程国际会议论文集。
    [28]
    M.Stepp、R.Tate和S.Lerner。LLVM的基于Equality的翻译验证器。2011年CAV’11:第23届计算机辅助验证国际会议记录。
    [29]
    Z.T.Sudipta Kundu和S.Lerner。使用参数化程序等效性证明优化是正确的。在PLDI’09:2009年ACM SIGPLAN编程语言设计与实现会议记录。
    [30]
    D.赛姆。用HOL中标准ML的形式定义进行推理。在第六届高阶逻辑定理证明及其应用国际研讨会上,1993年。
    [31]
    Z.Tatlock和S.Lerner。为经过验证的编译器带来可扩展性。PLDI’10:2010年ACM SIGPLAN编程语言设计与实现会议记录。
    [32]
    J.-B.特里斯坦和X.勒罗伊。翻译验证器的形式化验证:指令调度优化的案例研究。2008年POPL:第35届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录。
    [33]
    J.-B.特里斯坦和X.勒罗伊。已验证惰性代码运动的验证。在PLDI’09:2009年ACM SIGPLAN编程语言设计与实现会议记录。
    [34]
    J.B.Tristan和X.Leroy。一个简单的、经过验证的软件管道验证程序。2010年,第37届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集。
    [35]
    J.-B.特里斯坦、P.戈维罗和G.莫里塞特。评估llvm的value-graph翻译验证。2011年《PLDI’11:ACM SIGPLAN 2011年编程语言设计与实现会议论文集》。
    [36]
    A.Zaks和A.Pnueli。用于编译器验证的程序分析。在PASTE’08:第八届ACM SIGPLAN-SIGSOFT软件工具和工程程序分析研讨会会议记录,2008年。
    [37]
    L.Zhao、G.Li、B.De Sutter和J.Regehr。ARMor:经过充分验证的软件故障隔离。EMSOFT’11:第九届ACM嵌入式软件国际会议论文集,2011年。

    引用人

    查看全部
    • (2024)定制加速器微结构的正确构造设计电气电子工程师学会计算机期刊10.1109/TC.2023.3329243号73:1(278-291)在线发布日期:2024年1月1日
    • (2023)Checked C1的形式化模型计算机安全杂志10.3233/JCS-23004031:5(581-614)在线发布日期:2023年10月13日
    • (2023)用状态机验证同步数据流的编译嵌入式计算系统ACM事务10.1145/360810222:5秒(1-26)在线发布日期:2023年10月31日
    • 显示更多引用者

    索引术语

    1. 规范化验证程序转换的LLVM中间表示

        建议

        评论

        信息和贡献者

        问询处

        发布于

        封面图片ACM SIGPLAN注意事项
        ACM SIGPLAN通知 第47卷第1期
        流行'12
        2012年1月
        569页
        国际标准编号:0362-1340
        EISSN公司:1558-1160
        内政部:10.1145/2103621
        期刊目录
        • 封面图片ACM会议
          POPL’12:第39届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录
          2012年1月
          602页
          国际标准图书编号:9781450310833
          内政部:10.1145/2103656
        如果复制品不是为了盈利或商业利益而制作或分发的,并且复制品的第一页载有本通知和完整引文,则允许免费制作本作品的全部或部分数字或硬拷贝以供个人或课堂使用。必须尊重ACM以外的其他人对本作品组成部分的版权。允许用信用证进行摘要。要以其他方式复制或重新发布、在服务器上发布或重新分发到列表,需要事先获得特定许可和/或收取费用。从请求权限[电子邮件保护]

        出版商

        计算机协会

        美国纽约州纽约市

        出版历史记录

        出版:2012年1月25日
        在SIGPLAN中发布音量47,问题1

        检查更新

        作者标记

        1. Coq公司
        2. 有限责任公司
        3. 存储器安全

        限定符

        • 研究文章

        贡献者

        其他指标

        文献计量学和引文

        文献计量学

        文章指标

        • 下载次数(过去12个月)153
        • 下载次数(最近6周)16

        其他指标

        引文

        引用人

        查看全部
        • (2024)定制加速器微结构的正确构造设计电气电子工程师学会计算机期刊10.1109/TC.2023.3329243号73:1(278-291)在线发布日期:2024年1月1日
        • (2023)Checked C1的形式化模型计算机安全杂志10.3233/JCS-23004031:5(581-614)在线发布日期:2023年10月13日
        • (2023)用状态机验证同步数据流的编译嵌入式计算系统ACM事务10.1145/360810222:5秒(1-26)在线发布日期:2023年10月31日
        • (2023)P4Cub:大型路由器的一种小语言第十二届ACM SIGPLAN认证程序和证明国际会议记录10.1145/3573105.3575670(303-319)在线发布日期:2023年1月11日
        • (2023)利用源级内存分配事件日志丰富信息流跟踪的语义2023年IEEE可靠和安全计算会议(DSC)10.1109/DSC61021.2023.10354156(1-10)在线发布日期:2023年11月7日
        • (2023)基于深度学习的元宇宙现实主义内容教育平台研究计算机科学与普适计算进展10.1007/978-981-99-1252-0_41(313-317)在线发布日期:2023年6月3日
        • (2023)用列表证明C程序的终止自动扣除–CADE 2910.1007/978-3-031-38499-8_16(266-285)在线发布日期:2023年9月2日
        • (2023)连续传递方式到静态单一赋值形式的验证转换软件工程的理论方面10.1007/978-3-031-35257-7_2(20-37)在线发布日期:2023年6月27日
        • (2022)范畴代数中的基础博弈语义理论计算机科学中的电子论文集10.4204/EPTCS.372.26372(368-383)在线发布日期:2022年11月3日
        • (2022)关于分层一元解释器的形式推理美国计算机学会程序设计语言会议录10.1145/35476306:ICFP(254-282)在线发布日期:2022年8月31日
        • 显示更多引用者

        视图选项

        获取访问权限

        登录选项

        完全访问权限

        查看选项

        PDF格式

        以PDF文件查看或下载。

        PDF格式

        电子阅读器

        使用联机查看电子阅读器.

        电子阅读器

        媒体

        数字

        其他

        桌子

        分享

        分享

        共享此出版物链接

        在社交媒体上分享