Skip to content
LLVM Devs & Users Social

Details

We're organizing an end-of-summer social at the Tritech office. We're going to have two talks again.

Just as last time, we will begin to gather around 17:30, and the talks will start roughly 30 minutes afterwards. There will be pizza courtesy of Tritech.

The talks:

  • Using LLVM to develop a compiler for a new language * - Christer Swahn

Tuplex is a strongly typed imperative programming language with innovations in semantics, data representation, and syntax. This talk will highlight some of the experiences of mapping advanced high-level semantics onto LLVM's IR and data model.

  • Generalizing functions, methods, and lambdas

  • Uniform treatment of primitive values and aggregate object values

  • Generics (parameterized types)

  • OO, inheritance, and polymorphism

  • Foreign function interface

  • Using LLVM for Decompilation and Binary Analysis * - Robin Eklind, Daniel Lidén

The talk will give an introduction to decompilation techniques, discuss how LLVM fits into the picture and why its IR is suitable for the task, and provide a set of use cases.

A decompilation pipeline may be composed of three conceptual modules which translate binary executables to high level source code:

  • Front-end: lift machine code to LLVM IR (i.e. x86, ARM, MIPS -> LLVM IR)

  • Middle-end: perform analysis on LLVM IR to recover high level information

  • control flow analysis: recover control flow primitives (e.g. two-way conditionals, pre-test loops, ...)

  • data flow analysis: recover expressions

  • type analysis: recover types (e.g. pointers, structs, float vs int, ...)

  • Back-end: translate LLVM IR to a high level language (e.g. C, Go, ...) using the information acquired from the analysis.

Some use cases for decompilation include: security audit, malware analysis, source code recovery, analysis of proprietary algorithms and software, porting of software between machine architectures etc

Photo of LLVM / Clang Sweden socials group
LLVM / Clang Sweden socials
See more events