Как-то давным-давно я зарегистрировал юр лицо «Alinsky Technologies», и не стал его закрывать после того как нужда в нем пропала - вдруг пригодится. Это получается от меня сейчас требуют переименовать его в что-то вроде «НИИ Технологий им. Алинского» или «Товарищество Алинского: Чудеса Заморские»?) 🤣
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Жаль в России нет своего Сильверхенда, который взорвал бы ядерку в кремле
1 3 2 2 1
Наконец-то на днях я дошел до генерации вменяемых ассемблеров в разработке своего компилятора 😊
На самом деле учитывая, что я использую 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