rdsdatasource: Основы llvm

19
LLVM

Upload: ramblerco

Post on 23-Jan-2018

83 views

Category:

Technology


1 download

TRANSCRIPT

LLVM

Ты кто такой? LLVM

• Набор библиотек для реализации компиляторов

• Кучу всяких helper библиотек• Промежуточное представление кода (IR)

для оптимизации Кучу всяких helper библиотек

Классический дизайн компиляторов

Архитектура LLVM

LLVM & iOS

Clang compiler Swift compiler

Objective-C LLVM

Frontend libclang

LLVM Optimizer

X86, ARM Backend

Clang driver

LLVM IRSource Optimised IR Machine code

Objective-C LLVM% clang -ccc-print-phases hello.m

0: input, "hello.m", objective-c

1: preprocessor, {0}, objective-c-cpp-output

2: compiler, {1}, assembler

3: assembler, {2}, object

4: linker, {3}, image

5: bind-arch, "x86_64", {4}, image

Swift LLVM

Swift Frontend

LLVM IR Optimizer

ARM Backend

SourceLLVM IR Optimized

IR Machine code

Swift Frontend

ParsingSemantic analysis

Clang importerSIL(Swift Intermediate Language)

generation SIL guaranteed transformations

LLVM IR Generation

Ты кто такой? BITCODE

Swift LLVM

Swift Frontend

LLVM IR Optimizer

ARM Backend

SourceLLVM IR Optimized

IR Machine code

Swift LLVM

ARM Backend

FatMachine

code

Apple Server

Жирный код без биткод

Swift LLVM

Swift Frontend

Source BITCODE Apple Server

Код превращается в биткод

Ты кто такой? BITCODE

• Также известный как LLVM bitcode file• На самом деле это две вещи в одном• Представляет формат bitstream контейнера• Энкодит LLVM IR в bitstream контейнер

Swift LLVM

BITCODE Apple Server

LLVM IR Optimizer

ARM Backend

Optimized IR

SlimMachine

code