跳到主要内容
10.1145/3314221.3314601acm会议文章/章节视图摘要出版物页面物理层数据接口会议记录会议集合
研究论文
公共访问

x86-64用户级指令集体系结构的完整形式语义

出版:2019年6月8日 出版历史
  • 获取引文提醒
  • 摘要

    我们提供了迄今为止最完整、测试最彻底的x86-64形式语义。我们的语义忠实地将x86-64 Haswell指令集体系结构的所有非弃用的顺序用户级指令形式化。总共有3155个指令变体,对应774个助记符。该语义是完全可执行的,已经针对7000多个指令级测试用例和GCC酷刑测试套件进行了测试。这一广泛的测试取得了成效,揭示了x86-64参考手册和其他现有语义中的错误。我们还说明了语义在不同形式分析中的潜在应用,并讨论了它如何对处理器验证有用。

    补充材料

    WEBM文件 (第1133-dasgupta.webm页)
    MP4文件 (3314221.3314601.mp4)
    视频演示

    工具书类

    [1]
    2008年IEEE Std 754-2008-IEEE浮点运算标准。https://standards.ieee.org/findsds/standard/754-2008.html。
    [2]
    2017.Sail x86 ISA模型。https://github.com/rems-project/sail/tree/sail2/x86。上次访问时间:2019年5月2日。
    [3]
    2018年。愤怒:一个强大且用户友好的二进制分析平台!http://angr.io/。上次访问时间:2019年5月2日。
    [4]
    2018.Intel Developer Zone中报告的错误:指令语义中可能存在错误。https://software.intel.com/en-us/forums/intel-isa-extensions/topic/773342。上次访问时间:2019年5月2日。
    [5]
    2018年,斯托克报道的错误:对可能或必须采用undef值的旗帜行为进行建模。https://github.com/StanfordPL/stoke/issues/986。上次访问时间:2019年5月2日。
    [6]
    2018年,斯托克报告的错误:语义错误。https://github.com/StanfordPL/stoke/issues/983。上次访问时间:2019年5月2日。
    [7]
    2018.C语言测试套件:C-酷刑8.1.0版。https://gcc.gnu.org/onlinedocs/gccint/C-Tests.html。上次访问时间:2019年5月2日。
    [8]
    2018年,埃里克·施库夫扎(Eric Schkufza)。个人沟通。
    [9]
    2018.可评估字符串中级语言。https://radare.gitbooks.io/radare2book/content/dissembling/esil.html。上次访问时间:2019年5月2日。
    [10]
    2018.GDB:GNU项目调试器。https://www.gnu.org/software/gdb/。上次访问时间:2019年5月2日。
    [11]
    2018.英特尔64与IA-32体系结构软件开发人员手册。https://software.intel.com/en-us/articles/intel-sdm。2016年10月12日出版,2018年5月18日更新。
    [12]
    2018年,MPFR Java绑定。https://github.com/kframework/mpfr-java。上次访问时间:2019年5月2日。
    [13]
    2018.Remill:用于将x86、amd64和aarch64机器代码提升为LLVM位代码的库。https://github.com/trailoffits/remill。上次访问时间:2019年5月2日。
    [14]
    2018年考证助理。https://coq.inria.fr/。上次访问时间:2019年5月2日。
    [15]
    2018年,GNU MPFR图书馆。https://www.mpfr.org/。上次访问时间:2019年5月2日。
    [16]
    2018.x86和amd64指令参考(非官方)。http://www.felixcloutier.com/x86/。上次访问时间:2019年5月2日。
    [17]
    2018.X86isa:实现的操作码:x86模型支持的操作码。http://www.cs.utexas.edu/users/moore/acl2/manuals/current/manual/index-seo.php/X86ISA___IMPLEMENTED-OPCODES。上次访问时间:2019年5月2日。
    [18]
    rmem:ARMv8、RISC-V、Power和x86的可执行并发模型。https://github.com/rems-project/rmem/。上次访问时间:2019年5月2日。
    [19]
    A.Ahmed、F.Farahmandi和P.Mishra。2018年。使用RTL模型上的调和测试进行定向测试生成。2018年欧洲会议展览设计、自动化测试(DATE).1538s1543。
    [20]
    塞尔吉·阿尔瓦雷斯。2018年,Radare2。https://rada.re/r/。上次访问时间:2019年5月2日。
    [21]
    阿拉斯代尔·阿姆斯特朗、托马斯·鲍瑞斯、布莱恩·坎贝尔、阿拉斯泰尔·里德、凯瑟琳·格雷、罗伯特·M·诺顿、普拉山斯·蒙德库尔、马克·沃塞尔、乔恩·弗伦奇、克里斯托弗·普尔特、抖流感、伊恩·斯塔克、内尔·克里希纳斯瓦米和彼得·苏厄尔。2019.针对ARMv8-a、RISC-v和CHERI-MIPS的ISA语义。程序。ACM计划。语言。《持久性有机污染物公约》第71条第3款(2019年1月),共31页。
    [22]
    Gogul Balakrishnan和Thomas Reps.2010年。WYSIWYX:你所看到的并不是你所执行的。ACM事务处理。程序。语言系统。第32、6条,第23条(2010年8月),84页。
    [23]
    法布里斯·贝拉德。2005年,QEMU,一款快速便携的动态翻译器。USENIX年度技术会议(ATEC’05)年度会议记录.USENIX协会,美国加利福尼亚州伯克利,41-41。http://dl.acm.org/citation.cfm?id=1247360.1247401。
    [24]
    David Brumley、Ivan Jager、Thanassis Avgerinos和Edward J.Schwartz。2011年,BAP:二进制分析平台。第23届计算机辅助验证国际会议记录(CAV’11)斯普林格·弗拉格,柏林,海德堡,463-469。http://dl.acm.org/citation.cfm?id=2032305.2032342。
    [25]
    克里斯蒂安·卡达尔(Cristian Cadar)、丹尼尔·邓巴(Daniel Dunbar)和道森·恩格尔(Dawson Engler)。2008年,KLEE:复杂系统程序的无辅助和自动生成高平均测试。第八届USENIX操作系统设计与实现会议记录(OSDI’08).USENIX协会,美国加利福尼亚州伯克利,209-224。http://dl.acm.org/citation.cfm?id=1855741.1855756。
    [26]
    桑迪普·达斯古普塔。2018.英国x86-64的语义。https://github.com/kframework/X86-64-语义。上次访问时间:2019年5月2日。
    [27]
    桑迪普·达斯古普塔。2019.定义Strata/Stoke中不支持的指令语义。https://github.com/StanfordPL/stoke/pull/996。上次访问时间:2019年5月2日。
    [28]
    桑迪普·达斯古普塔。2019.提高斯托克调试电路的能力。https://github.com/StanfordPL/stoke/pull/997。上次访问时间:2019年5月2日。
    [29]
    丘奇·埃里森和格里戈·罗伊。2012.C的可执行形式语义与应用程序。第39届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录(POPL'12)美国医学会,533-544。
    [30]
    Pedro Fonseca、Kaiyuan Zhang、Xi Wang和Arvind Krishnamurthy。2017年,正式验证分布式系统正确性的实证研究。第十二届欧洲计算机系统会议记录(EuroSys’17).ACM,美国纽约州纽约市,328-343。
    [31]
    哈里·福斯特。2015年,《功能验证趋势:2014年行业研究》。第52届设计自动化年会(DAC’15)会议记录ACM,美国纽约州纽约市,48:1-48:6。
    [32]
    Shilpi Goel、Warren A.Hunt和Matt Kaufmann。2017为软件验证设计一个正式的、可执行的x86 ISA模拟器施普林格国际出版社,查姆,173-209。
    [33]
    Shilpi Goel、Warren A.Hunt、Matt Kaufmann和Soumava Ghosh。2014.进行系统调用的x86机器代码程序的模拟和正式验证。第14届计算机辅助设计形式方法会议记录(FMCAD’14)FMCAD Inc,德克萨斯州奥斯汀,第18条,共8页。http://dl.acm.org/citation.cfm?id=2682923.2682944。
    [34]
    顾荣辉、钟绍、陈浩、吴雄楠、金炯、斯约伯格和大卫·科斯坦佐。2016.CertiKOS:构建认证并发操作系统内核的可扩展架构。第十二届USENIX操作系统设计与实现会议记录(OSDI’16).USENIX协会,美国加利福尼亚州伯克利,653-669。http://dl.acm.org/citation.cfm?id=3026877.3026928。
    [35]
    Niranjan Hasabnis和R.Sekar。2016.通过代码生成器的符号执行提取指令语义。2016年第24届ACM SIGSOFT国际软件工程基础研讨会(FSE 2016)会议记录美国纽约州纽约市ACM,邮编:301-313。
    [36]
    Niranjan Hasabnis和R.Sekar。2016年,将大会提升为中间代表:利用编译器的新方法。第二十届编程语言和操作系统体系结构支持国际会议(ASPLOS’16)会议记录.ACM,美国纽约州纽约市,311-324。
    [37]
    Stefan Heule、Eric Schkufza、Rahul Sharma和Alex Aiken。2016.分层合成:自动学习x86-64指令集。第37届ACM SIGPLAN编程语言设计与实现会议记录(PLDI’16).ACM,美国纽约州纽约市,237-250。
    [38]
    马特·考夫曼(Matt Kaufmann)、J.斯特罗瑟·摩尔(J.Strother Moore)和帕纳吉蒂斯·马诺里奥斯(Panagiotis Manolios)。2000计算机辅助推理:一种方法Kluwer学术出版社,美国马萨诸塞州诺维尔。
    [39]
    Chris Lattner和Vikram Adve。2004年,LLVM:终身程序分析与转换的编译框架。2004年代码生成与优化国际研讨会论文集(CGO’04)加利福尼亚州帕洛阿尔托。
    [40]
    凯文·劳顿(Kevin P.Lawton)。1996年,Bochs:适用于Unix/X的便携式PC仿真器。Linux J。1996年,第29条,第7条(1996年9月)。http://dl.acm.org/citation.cfm?id=326350.326357。
    [41]
    泽维尔·勒罗伊。2009.真实编译器的正式验证。Commun公司。ACM公司52,7(2009年7月),107-115。
    [42]
    Junghee Lim和Thomas Reps.2013年。TSL:生成抽象解释器的系统及其在机器代码分析中的应用。ACM事务处理。程序。语言系统。35,1,第4条(2013年4月),59页。
    [43]
    L.Liu和S.Vasudevan。2011.通过混合源代码分析在RTL中高效生成验证输入。2011年欧洲设计、自动化测试. 1-6.
    [44]
    刘凌毅(Lingyi Liu)和肖巴·瓦苏德万(Shobha Vasudevan)。2014.通过RTL的混合静态和动态分析缩放输入刺激生成。ACM事务处理。设计。自动。电子。系统。第4条第20、1条(2014年11月),共33页。
    [45]
    洛伦佐·马蒂诺尼(Lorenzo Martignoni)、斯蒂芬·麦卡曼特(Stephen McCamant)、蓬辛·普桑卡姆(Pongsin Poosankam)、黎明之歌(Dawn Song)和彼得罗斯·马尼提斯(Petros Maniatis)。2012年,路径探索提升:Lo-fi模拟器的Hi-fi测试。第十七届程序设计语言和操作系统体系结构支持国际会议记录美国纽约州纽约市ACM,337-348。
    [46]
    Greg Morrisett、Gang Tan、Joseph Tassarotti、Jean-Baptiste Tristan和Edward Gan。2012年。RockSalt:针对x86的更好、更快、更强的SFI。PLDI:编程语言的设计与实现(2012), 395-404.
    [47]
    尼古拉斯·奈瑟科特和朱利安·苏厄德。2003年,《Valgrind:项目监督框架》。理论计算机科学电子笔记89, 2 (2003), 44-66. RV’2003,运行时验证(CAV’03卫星车间)。
    [48]
    斯科特·欧文斯(Scott Owens)、苏斯米特·萨卡尔(Susmit Sarkar)和彼得·苏厄尔(Peter Sewell)。2009.更好的x86内存模型:x86-TSO。第22届高阶逻辑定理证明国际会议论文集(TPHOLs’09)斯普林格·弗拉格,柏林,海德堡,391-407。
    [49]
    大军公园、张毅、马纳斯维·萨克塞纳、菲利普·戴安和格里戈·罗伊夫。2018.以太坊虚拟机字节码的正式验证工具。2018年欧洲软件工程会议暨软件工程基础研讨会第26届ACM联合会议记录(ESEC/FSE 2018).ACM,美国纽约州纽约市,912-915。
    [50]
    克里斯托弗·普尔特(Christopher Pult)、《颤抖的Flur》(Shaked Flur)、《威尔·迪肯》(Will Deacon)、《乔恩·弗伦奇》(Jon French)、苏斯米特·萨卡尔(Susmit Sarkar)和彼得·。2017.简化ARM并发:ARMv8的多原子公理和操作模型。程序。ACM计划。语言。《持久性有机污染物公约》第19条第2款(2017年12月),29页。
    [51]
    阿拉斯泰尔·里德。2016。ARM的体系结构规范语言。https://alastairreid.github.io/specification_languages/。上次访问时间:2019年5月2日。
    [52]
    阿拉斯泰尔·里德。2017年。ARM®v8-A和v8-M系统级架构值得信赖的规范。2016年FMCAD第16届计算机辅助设计形式方法会议记录(2017), 161-168.
    [53]
    格里戈·罗伊和安德烈·特夫?内斯库。2012.使用匹配逻辑检查可达性。第27届面向对象编程、系统、语言和应用会议记录(OOPSLA’12).美国医学会,555-574。https://doi.org/citation.cfm?doid=2384616.2384656。
    [54]
    伊恩·罗塞尔(Ian Roessle)、弗里克·韦贝克(Freek Verbeek)和比诺伊·拉文德兰(Binoy Ravindran)。2019.正式验证x86-64二进制文件的大步语义。第八届ACM SIGPLAN认证项目和证明国际会议记录(CPP 2019)美国纽约州纽约市ACM,181-195年。
    [55]
    格里戈·罗伊和特拉安·弗洛林·埃尔布?螺母?。2010年K语义框架概述。逻辑与代数程序设计杂志79, 6 (2010), 397-434.
    [56]
    安德鲁·鲁夫(Andrew Ruef)和阿特姆·迪纳堡(Artem Dinaburg),2014年。使用McSema将X86指令语义静态翻译为LLVM。REcon公司(2014). https://github.com/trailobits/mcsema。
    [57]
    苏斯米特·萨卡尔、彼得·苏厄尔、弗朗西斯科·扎帕·纳德利、斯科特·欧文斯、汤姆·里奇、托马斯·布雷班特、马格努斯·奥·米林和杰德·阿尔加莱。2009年,《x86-CC多处理器机器代码的语义》。第36届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录(POPL'09)ACM,美国纽约州纽约市,379-391。
    [58]
    埃里克·施库夫扎(Eric Schkufza)、拉胡尔·夏尔马(Rahul Sharma)和亚历克斯·艾肯(Alex Aiken)。2013.随机超优化。第十八届程序设计语言和操作系统体系结构支持国际会议论文集(ASPLOS’13).ACM,美国纽约州纽约市,305-316。
    [59]
    Traian FlorinÞerb?nuta、Andrei Arusoaie、David Lazar、Chucky Ellison、Dorel Lucanu和Grigore Roþu。【名词】。K底漆(3.2版)技术报告。
    [60]
    Yan Shoshitaishvili、Ruoyu Wang、Christopher Salls、Nick Stephens、Mario Polino、Audrey Dutcher、John Grosen、Siji Feng、Christophe Hauser、Christopher Kruegel和Giovanni Vigna。2016年,《SoK:(现状)战争艺术:二元分析中的进攻性技巧》。(2016).
    [61]
    Venkatesh Srinivasan和Thomas代表,2015年。从语义合成机器代码。第36届ACM SIGPLAN编程语言设计与实现会议记录-PLDI 2015(2015), 596-607.
    [62]
    安德烈·斯特夫?nescu、大军公园、石角宇文、李一龙和格里戈·罗伊。2016.所有语言的基于语义的程序验证程序。2016年ACM SIGPLAN面向对象编程、系统、语言和应用国际会议记录(OOPSLA 2016)美国纽约州纽约市ACM,74-91。
    [63]
    肯·汤普森(Ken Thompson)。1984年《关于信托的思考》。Commun公司。ACM公司27,8(1984年8月),761-763。
    [64]
    尼科莱·泽尔多维奇(Nickolai Zeldovich)、塞拉斯·博伊德·威基泽(Silas Boyd-Wickizer)、埃迪·科勒(Eddie Kohler)和大卫·马齐耶斯(David Mazières)。2006.在HiStar中明确信息流。第七届USENIX操作系统设计与实现研讨会论文集-第7卷(OSDI’06).USENIX协会,美国加利福尼亚州伯克利,19-19。http://dl.acm.org/citation.cfm?id=1267308.1267327。

    引用人

    查看全部
    • (2024)WebAssembly到本机指令选择的轻量级模块化验证第29届ACM国际编程语言和操作系统体系结构支持会议记录,第1卷10.1145/3617232.3624862(231-248)在线发布日期:2024年4月27日
    • (2023)为语言不可知演绎程序验证程序生成证明证书美国计算机学会程序设计语言会议录10.1145/35860297:OOPSLA1(56-84)在线发布日期:2023年4月6日
    • (2023)加拉帕戈斯:在异构硬件上开发经验证的低级加密技术2023年ACM SIGSAC计算机和通信安全会议记录10.1145/3576915.3616603(2113-2127)在线发布日期:2023年11月15日
    • 显示更多引用者

    建议

    评论

    信息和贡献者

    问询处

    发布于

    封面图片ACM会议
    PLDI 2019:第40届ACM SIGPLAN编程语言设计与实现会议论文集
    2019年6月
    1162页
    国际标准图书编号:9781450367127
    内政部:10.1145/3314221
    如果复制品不是为了盈利或商业利益而制作或分发的,并且复制品的第一页载有本通知和完整引文,则允许免费制作本作品的全部或部分数字或硬拷贝以供个人或课堂使用。必须尊重ACM以外的其他人对本作品组成部分的版权。允许赊账提取。要以其他方式复制或重新发布,在服务器上发布或重新发布到列表,需要事先获得特定许可和/或付费。从请求权限[电子邮件保护]

    赞助商

    出版商

    计算机协会

    美国纽约州纽约市

    出版历史

    出版:2019年6月8日

    权限

    请求对此文章的权限。

    检查更新

    徽章

    作者标记

    1. 形式语义学
    2. ISA规范
    3. x86-64码

    限定符

    • 研究文章

    资金来源

    会议

    PLDI’19
    主办单位:
    PLDI’19:40届ACM SIGPLAN编程语言设计与实现会议
    2019年6月22日至26日
    亚利桑那州,凤凰城,美国

    接受率

    2067份提交文件的总体接受率为406份,20%

    贡献者

    其他指标

    文献计量学和引文

    文献计量学

    文章指标

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

    其他指标

    引文

    引用人

    查看全部
    • (2024)WebAssembly到本机指令选择的轻量级模块化验证第29届ACM国际编程语言和操作系统体系结构支持会议记录,第1卷10.1145/3617232.3624862(231-248)在线发布日期:2024年4月27日
    • (2023)为语言不可知演绎程序验证程序生成证明证书美国计算机学会程序设计语言会议录10.1145/35860297:OOPSLA1(56-84)在线发布日期:2023年4月6日
    • (2023)加拉帕戈斯:在异构硬件上开发经验证的低级加密技术2023年ACM SIGSAC计算机和通信安全会议记录10.1145/3576915.3616603(2113-2127)在线发布日期:2023年11月15日
    • (2023)将ISA安全保证正式化、验证和应用为通用合同2023年ACM SIGSAC计算机和通信安全会议记录10.1145/3576915.3616602(2083-2097)在线发布日期:2023年11月15日
    • (2023)一种高覆盖率、高效的x86处理器指令级测试方法电气电子工程师学会计算机期刊10.1109吨/约2023.328876272:11(3203-3217)在线发布日期:2023年11月
    • (2023)QueryX:对解码代码进行符号查询,以查找COTS二进制文件中的错误2023年IEEE安全与隐私研讨会(SP)10.1109/SP46215.2023.10179314(3279-312795)在线发布日期:2023年5月
    • (2023)通过验证接口一致性和认证编译器实现端到端验证的TEE2023年IEEE第36届计算机安全基础研讨会(CSF)10.1109/CSF57540.2023.00021(324-339)在线发布日期:2023年7月
    • (2023)基于形式逻辑的底层可达性分析测试和证明10.1007/978-3-031-38828-6_2(21-39)在线发布日期:2023年7月20日
    • (2023)BIRD:X86-64二进制文件的正式验证反编译的二进制中间表示测试和证明10.1007/978-3-031-38828-6_1(3-20)在线发布日期:2023年7月18日
    • (2022)Coq中的机械化匹配逻辑理论计算机科学电子论文集10.4204/EPTCS.369.2369(17-36)在线发布日期:2022年9月19日
    • 显示更多引用者

    视图选项

    查看选项

    PDF格式

    以PDF文件查看或下载。

    PDF格式

    电子阅读器

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

    电子阅读器

    获取访问权限

    登录选项

    完全访问权限

    媒体

    数字

    其他

    桌子

    分享

    分享

    共享此出版物链接

    在社交媒体上分享