Базовый курс C++ (MIPT, ILab). Lecture 21. LLVM, часть 1

preview_player
Показать описание
Лекции в бакалавриате МФТИ по C++ на русском языке.

На этой лекции мы познакомимся с LLVM IR и разберем основы кодогенерации. Очень многие концепции, например множественное наследование реализации, предстанут в новом свете.

Лектор: Константин Владимиров
Дата лекции: 14 марта 2022 года
Съёмка: Владислав Белов.
Звук: Дмитрий Рябцев.

Timeline:
00:00 Введение: компиляторы и лицензии
09:30 LLVM IR
19:11 Типы и память
30:45 getelementptr
41:25 Иерархия классов в LLVM
51:40 ParaCL и компиляция
1:00:15 Кодогенерация
1:11:50 Тонкости создания if и while
1:21:00 Домашнее задание и литература

Errata:
* Здесь пока пусто
Рекомендации по теме
Комментарии
Автор

LLVM реально проектировало ОПГ, которых боялись все. Одно только то, что они не только не осуждают дружбу классов, но и насаждают ее, заставляет задуматься о многом....

ndidcyg
Автор

Здравствуйте.
На слайде "GEP: униформность доступа" (примерно 32:30)
Синтаксис такой:
<result> = getelementptr <ty>, ....
А использование такое:
%fst = i32* getelementptr.... (указан тип i32* перед GEP, хотя в описании синтаксиса нет никакого типа до GEP).
А на следующем слайде "GEP для структуры" (33:57), использование уже такое:
%eltpt = getptrelement... (один в один как в описании синтаксиса).
Вопрос:
Откуда взялся тип i32* и, что он означает?

TheFX
Автор

Еще один датчанин - Anders Hejlsberg, отец C#, Typescript, Delphi, Turbo Pascal

demokraken
Автор

57:36 - хотя мы и точно знаем что рано или поздно последовательность Коллатца сойдется к 1 для любого инта, результат в данной программе для больших чисел скорее всего не будет правильный из-за переполнения в процессе)

ivankorotkov