Недавно друг написал мне:А знаешь, что было бы интересно? Почитать про то, как меняется код после применения оптимизаций.В этой статья я объясню оптимизации на нескольких примерах. По большей части фокус будет на том, что происходит, затрагивая почему и как только когда это имеет смысл или особый интерес. Читать далее
Это руководство посвящено написанию простейшего компилятора на LLVM. Никакой предварительной подготовки не требуется. Входным языком нашего компилятора будет BF. Это классический «игрушечный» язык для компиляторов, и даже есть компилятор BF в примерах к LLVM! В этом посте я приведу процесс написания компилятора с пояснениями. Читать дальше →
Для завершения реализации компилятора потребовалось около месяца времени (вечерами), чтобы на практике познакомиться с такими темами как BNF (Backus Naur Form), Abstract Syntax Tree (AST), Symbol Table, способами генерации кода, разработки самого компилятора (front-end, back-end), а также модификации виртуальной машины CVM. Ранее с этими темами был не знаком, но благодаря комментаторам погрузился. Хоть затрагиваемых тем много, постараюсь рассказать очень лаконично. Но обо всём по порядку. Читать далее
Как именно вы спроектировали бы оптимизирующий компилятор? Точнее, как именно вы спроектировали и реализовали бы конкретные оптимизации? Попытка решить эту задачу за один присест — дело ошеломительно сложное и, пожалуй, даже невозможное, так как оптимизации компилятора во многом заключаются в следующем... Читать далее