Low Level Virtual Machine
^ но виртуалки там нет
LLVM - фреймворк для создания компилятора.
Компиляторы:
- GCC
- Clang
- Visual Studio
-
% Воткнуть в то, как работают компиляторы.
(for, while) единица управляющая конструкция не оч верно и понятно, переменная - тоже токен. Токен может состоять из токенов.
a = 5
^ лексема языка
Как работает компилятор?
- Лексический анализатор (LEX) - он разбивает на токены.
- Синтаксический анализ, представляется ввиде дерева mainstream компиляторы
После синтаксического дерева - работает компилятор или интерпретатором.
JIT компиляция - новый вид компиляции just in time
GCC Frontend?
^ говорят не интересно
Frontend -> Optimizer -> Code Generator
Gnu Compalier Collection - GCC это сборка компиляторов и у каждого есть ^
А LLVM это единая штука, поэтому это хорошо
Clang -> LLVM Optimizer -> Code Generator
C/C++ \ / x86/x64
Haskell \ -> LLVM Optimizer -> / PowerPC
Fortrun / \ Javascript
-
SSA - Static Single Assigment - одна переменная может быть присвоена только 1 раз
-
Phi - инструкций Если GoTo инструкция - куда пришли, то phi - откуда
-
Целочисленные типы данных любой размерности (i64, i32, i17, i5,...) n битное целое число Если вы написали i1, а платформа не поддерживает - то оно само перейдёт в i8
-
Только указатели
-
Поддержка структур данных, векторов и т.д.
-
Система типов данных рекурсивна
-
Богатый набор инструкций
LLVM IR - это как Assembler для всех платформ
Just In Time for c++/c/etc.