2.2 KiB
2.2 KiB
How to build a compiler with LLVM and MLIR
DONE Episode 1 - Introduction
What is it all about?
- Create a programming lang
- Guide for contributors
- A LLVM/MLIR guide
The Plan
- Git branches
- No live coding
- Feel free to contribute
Serene and a bit of history
- Other Implementations
-
Requirements
- C++ 14
- CMake
- Repository: https://devheroes.codes/Serene
- Website: lxsameer.com Email: lxsameer@gnu.org
DONE Episode 2 - Basic Setup
CLOSED: [2021-07-10 Sat 09:04]
Installing Requirements
LLVM and Clang
- mlir-tblgen
ccache (optional)
Building Serene and the builder
- git hooks
Source tree structure
dev.org
resources and TODOs
Episode 3 - Overview
Generic Compiler
- Modern Compiler Implementation in ML: Basic Techniques
- Compilers: Principles, Techniques, and Tools (The Dragon Book)
Common Steps
- Lexical analyzer
- Syntax analyzer
- Semantic analyzer
- Intermediate code generation
- Code optimizer
- Target code generation
LLVM
/Serene/serene/src/commit/9102085d83ae4f00e67eb78275a52d4752ef1137/docs/llvm.org
Watch Introdution to LLVM
Quick overview
Deducted from https://www.aosabook.org/en/llvm.html
Serene
A Compiler frontend
Steps
serenec
in parses the command lines argsreader
reads the input file and generates anAST
semantic analyzer
walks theAST
aned generates a newAST
and rewrites the necessary nodes.slir
generator generatesslir
dialect code fromAST
.- We lower
slir
to other dialects of the MLIR which we call the resultmlir
. - Then, We lower everything to the
LLVMIR dialect
and call itlir
(lowered IR). - Finally we fully lower
lir
toLLVM IR
and pass it to the object generator to generate object files. - Call the default
c compiler
to link the object files and generate the machine code.