Наконец-то на днях я дошел до генерации вменяемых ассемблеров в разработке своего компилятора 😊
На самом деле учитывая, что я использую LLVM я мог бы дойти до генерации ассемблера за наверное час-два проганья, но я перфекционист. Ну не могу я сначала итеративно строить скейтборд, самокат, велик, скутер и потом только машину - я люблю когда сразу космолет! Поэтому я решил с самого начала строить многоуровневый, многопоточный, расширяемый компилятор с оптимизациями, жесткой типизацией и своей философией. На прикрепленном фото выведен простенький код, но сразу в 5 промежуточных представлениях:
AST - абстрактное синтаксическое дерево - по сути это то что написал программист.
HIR - высокоуровневое промежуточное представление - это то как программиста понял мой компилятор. Именно на этом этапе происходит инференс типов и дешугаринг.
MIR - среднеуровневое промежуточное представление - это то как компилятор объяснит компьютеру то что накодил программист. На этом этапе происходит большая часть оптимизаций.
LLVM IR - промежуточное представление LLVM - по сути это универсальный машинонезависимый ассемблер.
ASM - ассемблер под мою машину - конкретный набор инструкций для конкретного процессора.
В общем я поздравляю себя с новым достижением!🥰
На самом деле учитывая, что я использую LLVM я мог бы дойти до генерации ассемблера за наверное час-два проганья, но я перфекционист. Ну не могу я сначала итеративно строить скейтборд, самокат, велик, скутер и потом только машину - я люблю когда сразу космолет! Поэтому я решил с самого начала строить многоуровневый, многопоточный, расширяемый компилятор с оптимизациями, жесткой типизацией и своей философией. На прикрепленном фото выведен простенький код, но сразу в 5 промежуточных представлениях:
AST - абстрактное синтаксическое дерево - по сути это то что написал программист.
HIR - высокоуровневое промежуточное представление - это то как программиста понял мой компилятор. Именно на этом этапе происходит инференс типов и дешугаринг.
MIR - среднеуровневое промежуточное представление - это то как компилятор объяснит компьютеру то что накодил программист. На этом этапе происходит большая часть оптимизаций.
LLVM IR - промежуточное представление LLVM - по сути это универсальный машинонезависимый ассемблер.
ASM - ассемблер под мою машину - конкретный набор инструкций для конкретного процессора.
В общем я поздравляю себя с новым достижением!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
3.5 кг, откормил за несколько месяцев
1 6 4 2 1
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
У меня включается отцовский инстинкт к Диане 🤗
Please open Telegram to view this post
VIEW IN TELEGRAM
Про его историю однозначно должны снять фильм…
https://www.youtube.com/watch?v=30rqdk4iZ5I
https://www.youtube.com/watch?v=30rqdk4iZ5I
В 1937 по личному указу гитлера был основан Volkswagen. На днях их крупный заводов начала поглощать израильская компания Rafael и теперь там будут производить Железный купол и другую израильскую военку.
Вот ирония
Вот ирония
This media is not supported in your browser
VIEW IN TELEGRAM
Про мои планы на лето рассказывает