ݺߣ

ݺߣShare a Scribd company logo
LLVM
Ты кто такой? LLVM
• Набор библиотек для реализации
компиляторов

• Кучу всяких helper библиотек

• Промежуточное представление кода (IR)
для оптимизации Кучу всяких helper
библиотек
RDSDataSource: Основы LLVM
RDSDataSource: Основы LLVM
Классический дизайн компиляторов
Архитектура LLVM
RDSDataSource: Основы LLVM
RDSDataSource: Основы LLVM
LLVM & iOS
Clang compiler
Swift compiler
Objective-C LLVM
Frontend
libclang
LLVM
Optimizer
X86, ARM
Backend
Clang driver
LLVM IR
Source
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
Source
LLVM IR
Optimized
IR Machine
code
Swift Frontend
Parsing

Semantic analysis

Clang importer

SIL(Swift Intermediate Language)

generation 

SIL guaranteed transformations

LLVM IR Generation
Ты кто такой?
BITCODE
Swift LLVM
Swift
Frontend
LLVM IR
Optimizer
ARM
Backend
Source
LLVM IR
Optimized
IR Machine
code
Swift LLVM
ARM
Backend
Fat

Machine
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
Slim

Machine
code

More Related Content

RDSDataSource: Основы LLVM