Stratified Synthesis: Automatically Learning the x86-64 Instruction Set

被引:0
|
作者
Heule, Stefan [1 ]
Schkufza, Eric [2 ]
Sharma, Rahul [1 ]
Aiken, Alex [1 ]
机构
[1] Stanford Univ, Stanford, CA 94305 USA
[2] VMware, Palo Alto, CA USA
基金
美国国家科学基金会;
关键词
ISA specification; program synthesis; x86-64;
D O I
10.1145/2908080.2908121
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
The x86-64 ISA sits at the bottom of the software stack of most desktop and server software. Because of its importance, many software analysis and verification tools depend, either explicitly or implicitly, on correct modeling of the semantics of x86-64 instructions. However, formal semantics for the x86-64 ISA are difficult to obtain and often written manually through great effort. We describe an automatically synthesized formal semantics of the input/output behavior for a large fraction of the x86-64 Haswell ISA's many thousands of instruction variants. The key to our results is stratified synthesis, where we use a set of instructions whose semantics are known to synthesize the semantics of additional instructions whose semantics are unknown. As the set of formally described instructions increases, the synthesis vocabulary expands, making it possible to synthesize the semantics of increasingly complex instructions. Using this technique we automatically synthesized formal semantics for 1,795 instruction variants of the x86-64 Haswell ISA. We evaluate the learned semantics against manually written semantics ( where available) and find that they are formally equivalent with the exception of 50 instructions, where the manually written semantics contain an error. We further find the learned formulas to be largely as precise as manually written ones and of similar size.
引用
收藏
页码:237 / 250
页数:14
相关论文
共 50 条
  • [1] Instruction Punning: Lightweight Instrumentation for x86-64
    Chamith, Buddhika
    Svensson, Bo Joel
    Dalessandro, Luke
    Newton, Ryan R.
    ACM SIGPLAN NOTICES, 2017, 52 (06) : 320 - 332
  • [2] LibLISA: Instruction Discovery and Analysis on x86-64
    Craaijo, Jos
    Verbeek, Freek
    Ravindran, Binoy
    Proceedings of the ACM on Programming Languages, 2024, 8 (OOPSLA2)
  • [3] Differential analysis of x86-64 instruction decoders
    Woodruff, William
    Carroll, Niki
    Peters, Sebastiaan
    2021 IEEE SYMPOSIUM ON SECURITY AND PRIVACY WORKSHOPS (SPW 2021), 2021, : 152 - 161
  • [4] Translating AArch64 Floating-Point Instruction Set to the x86-64 Platform
    You, Yi-Ping
    Lin, Tsung-Chun
    Yang, Wuu
    PROCEEDINGS OF THE 48TH INTERNATIONAL CONFERENCE ON PARALLEL PROCESSING WORKSHOPS (ICPP 2019), 2019,
  • [5] A Complete Formal Semantics of x86-64 User-Level Instruction Set Architecture
    Dasgupta, Sandeep
    Park, Daejun
    Kasampalis, Theodoros
    Adve, Vikram S.
    Rosu, Grigore
    PROCEEDINGS OF THE 40TH ACM SIGPLAN CONFERENCE ON PROGRAMMING LANGUAGE DESIGN AND IMPLEMENTATION (PLDI '19), 2019, : 1133 - 1148
  • [7] x86-64 Instruction Usage among C/C plus plus Applications
    Akshintala, Amogh
    Jain, Bhushan
    Tsai, Chia-Che
    Ferdman, Michael
    Porter, Donald E.
    SYSTOR '19: PROCEEDINGS OF THE 12TH ACM INTERNATIONAL SYSTEMS AND STORAGE CONFERENCE, 2019, : 68 - 79
  • [8] Improvements on Hiding x86-64 Instructions by Interleaving
    Mahoney, William
    McDonald, J. Todd
    Grispos, George
    Mandal, Sayonnha
    PROCEEDINGS OF THE 18TH INTERNATIONAL CONFERENCE ON CYBER WARFARE AND SECURITY ICCWS, 2023, : 246 - 255
  • [9] Automatic Parallelization of Irregular x86-64 Loops
    Neth, Brandon
    Strout, Michelle Mills
    PROCEEDINGS OF THE 2019 IEEE/ACM INTERNATIONAL SYMPOSIUM ON CODE GENERATION AND OPTIMIZATION (CGO '19), 2019, : 266 - 266
  • [10] A Review of Memory Errors Exploitation in x86-64
    Pirry, Conor
    Marco-Gisbert, Hector
    Begg, Carolyn
    COMPUTERS, 2020, 9 (02) : 1 - 21