Diplomová práce

Improved translation of LLVM IR code to C

Bc. Vincent Mihalkovič
Anotace

Táto práca rozširuje dekompilačný nástroj llvm2c, ktorý konvertuje programy z LLVM IR do jazyka C, o možnosť generovať do-while cykly vo výstupnom programe. Ďalej táto praca rozširuje llvm2c o schopnosť spresňovať typy pomocou ladiacich informácií a automatickú kontrolu zachovávania sémantickej ekvivalencie. Nástroj je vyhodnotení na sade programov z SV-COMP porovnaním s pôvodnou verziu a nástrojom …více

Abstract

This work extends the llvm2c decompilation tool, which converts LLVM IR programs to C, by adding the ability to generate do-while loops in the output program. It also extends llvm2c with improved type handling using debugging information and automated semantic-equivalence preserving checking. The tool is evaluated by comparing it with the baseline version and the Rellic tool using programs from the …více

Klíčová slova
decompilation llvm verification
Zadání práce
The Symbiotic tool is able to prune programs in LLVM, i.e. remove their instructions that do not affect the (non-)fulfillment of the given specification. This pruning can greatly simplify the subsequent verification of programs. Some verification tools expect C programs as input and therefore need to translate the pruned program back to C before processing it. One translator from LLVM to C is called llvm2c. Currently, this tool produces C programs that make heavy use of the goto statement. The goal of this thesis is to improve llvm2c so that it produces programs with control structures like for or while instead of goto. The thesis will provide a survey of existing tools for translating LLVM to C (in particular rellic and llvm-cbe). The thesis will also include experimental evaluation, in particular a comparison of the number of goto statements in programs produced by the original and modified llvm2c as well as by rellic and llvm-cbe tools on benchmarks from SV-COMP. Since some verification tools can take the advantage of for or while loops (e.g., to compute invariants or predicates for abstraction), this paper will also investigate the effect of implemented enhancements in llvm2c on the performance of an appropriately chosen verification tool.
Práce zkontrolována:
18. 5. 2023 13:18, prof. RNDr. Jan Strejček, Ph.D., učo 3366
Jazyk práce
angličtina angličtina
Termín obhajoby
19. 6. 2023
Práce byla úspěšně obhájena

Vedoucí

prof. RNDr. Jan Strejček, Ph.D., učo 3366
KTP FI MU

Oponent

RNDr. Henrich Lauko, Ph.D., učo 410438
abs FI MU

Konzultant

RNDr. Marek Chalupa, Ph.D.
abs FI MU

Masarykova univerzita Fakulta informatiky
Studijní program
Plán
Principy programovacích jazyků

Práce na příbuzné téma

Seznam prací, které mají shodná klíčová slova.

  • Přidání souboru

    Soubor nebo složku lze nahrát pomocí tlačítka Přidat.
  • Další operace se soubory

    Podrobnosti lze zjistit označením příslušného řádku.
  • Pohled pro experty

    Pro častou práci je možné zvolit režim Více možností.
  • Vyhledávání souborů

    Vyhledávaný výraz můžete zadat přímo do adresního řádku.
  • Rychlý přístup k souborům

    Pomocí funkce Nedávné je možné se rychle vrátit k právě prohlíženým souborům. Oblíbené soubory je také možné označit Hvězdičkou.