CcNav: Understanding Compiler Optimizations in Binary Code

被引:6
|
作者
Devkota, Sabin [1 ]
Aschwanden, Pascal [2 ]
Kunen, Adam [2 ]
Legendre, Matthew [2 ]
Isaacs, Katherine E. [1 ]
机构
[1] Univ Arizona, Tucson, AZ 85721 USA
[2] LLNI, Belfast, Antrim, North Ireland
关键词
Design study; program analysis; compilation; binary code; transferability; immersion; SYSTEM; VISUALIZATION; METHODOLOGY; DESIGN;
D O I
10.1109/TVCG.2020.3030357
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Program developers spend significant time on optimizing and tuning programs. During this iterative process, they apply optimizations, analyze the resulting code, and modify the compilation until they are satisfied. Understanding what the compiler did with the code is crucial to this process but is very time-consuming and labor-intensive. Users need to navigate through thousands of lines of binary code and correlate it to source code concepts to understand the results of the compilation and to identify optimizations. We present a design study in collaboration with program developers and performance analysts. Our collaborators work with various artifacts related to the program such as binary code, source code, control flow graphs, and call graphs. Through interviews, feedback, and pair-analytics sessions, we analyzed their tasks and workflow. Based on this task analysis and through a human-centric design process, we designed a visual analytics system Compilation Navigator (CcNav) to aid exploration of the effects of compiler optimizations on the program. CcNav provides a streamlined workflow and a unified context that integrates disparate artifacts. CcNav supports consistent interactions across all the artifacts making it easy to correlate binary code with source code concepts. CcNav enables users to navigate and filter large binary code to identify and summarize optimizations such as inlining, vectorization, loop unrolling, and code hoisting. We evaluate CcNav through guided sessions and semi-structured interviews. We reflect on our design process, particularly the immersive elements, and on the transferability of design studies through our experience with a previous design study on program analysis.
引用
收藏
页码:667 / 677
页数:11
相关论文
共 50 条
  • [1] Understanding the behavior of compiler optimizations
    Lee, Han
    von Dincklage, Daniel
    Diwan, Amer
    Moss, J. Eliot B.
    [J]. SOFTWARE-PRACTICE & EXPERIENCE, 2006, 36 (08): : 835 - 844
  • [2] The Effect of Combining Compiler Optimizations on Code Size
    Foleiss, Juliano Henrique
    da Silva, Anderson Faustino
    Ruiz, Linnyer Beatrys
    [J]. 2011 30TH INTERNATIONAL CONFERENCE OF THE CHILEAN COMPUTER SCIENCE SOCIETY (SCCC), 2012, : 187 - 194
  • [3] Not So Fast: Understanding and Mitigating Negative Impacts of Compiler Optimizations on Code Reuse Gadget Sets
    Brown, Michael D.
    Pruett, Matthew
    Bigelow, Robert
    Mururu, Girish
    Pande, Santosh
    [J]. PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2021, 5 (OOPSLA):
  • [4] Compiler Optimizations for Code Density of Variable Length Instructions
    Kultala, Heikki
    Viitanen, Timo
    Jaaskelainen, Pekka
    Helkala, Janne
    Takala, Jarmo
    [J]. PROCEEDINGS OF THE 2014 IEEE WORKSHOP ON SIGNAL PROCESSING SYSTEMS (SIPS 2014), 2014, : 127 - 132
  • [5] On a Technique for Transparently Empowering Classical Compiler Optimizations on Multithreaded Code
    Joisha, Pramod G.
    Schreiber, Robert S.
    Banerjee, Prithviraj
    Boehm, Hans-J.
    Chakrabarti, Dhruva R.
    [J]. ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 2012, 34 (02): : 1 - 42
  • [6] A compiler framework for recovery code generation in general speculative optimizations
    Lin, J
    Hsu, WC
    Yew, PC
    Ju, RDC
    Ngai, TF
    [J]. 13TH INTERNATIONAL CONFERENCE ON PARALLEL ARCHITECTURE AND COMPILATION TECHNIQUES, PROCEEDINGS, 2004, : 17 - 28
  • [7] A Technique for the Effective and Automatic Reuse of Classical Compiler Optimizations on Multithreaded Code
    Joisha, Pramod G.
    Schreiber, Robert S.
    Banerjee, Prithviraj
    Boehm, Hans-J.
    Chakrabarti, Dhruva R.
    [J]. POPL 11: PROCEEDINGS OF THE 38TH ANNUAL ACM SIGPLAN-SIGACT SYMPOSIUM ON PRINCIPLES OF PROGRAMMING LANGUAGES, 2011, : 623 - 636
  • [8] A Technique for the Effective and Automatic Reuse of Classical Compiler Optimizations on Multithreaded Code
    Joisha, Pramod G.
    Schreiber, Robert S.
    Banerjee, Prithviraj
    Boehm, Hans-J.
    Chakrabarti, Dhruva R.
    [J]. ACM SIGPLAN NOTICES, 2011, 46 (01) : 623 - 636
  • [9] Technique for the effective and automatic reuse of classical compiler optimizations on multithreaded code
    Joisha, Pramod G.
    Schreiber, Robert S.
    Banerjee, Prithviraj
    Boehm, Hans-J.
    Chakrabarti, Dhruva R.
    [J]. HP Laboratories Technical Report, 2010, (81):
  • [10] Compiler Optimizations for OpenMP
    Doerfert, Johannes
    Finkel, Hal
    [J]. EVOLVING OPENMP FOR EVOLVING ARCHITECTURES, 2018, 11128 : 113 - 127