1563
Обсуждение дизайна языков программирования (как новых, так и существующих). Литература: https://github.com/true-grue/Compiler-Development Создание и устройство компиляторов: @CompilerDev Для новичков: @pld_beginners
Где дотнет строит ast из байткода? Речь о декомпиляторах типа ilspy?
Читать полностью…
Кстати, а ты язык будешь делать под свою вм или вм другого языка, или может натив?
Читать полностью…
Сам llvm просто абстракция над компиляцией в целевые платформы, но машинный код это уже результат, и далеко не обобщённый
Читать полностью…
llvm не vm, извините, хотя могу себе представить что кто-то патчит llvm ir
Читать полностью…
Когда мы декомпилируем, то уже ни о какой стабильности речи идти не может. Да и вмки не особо низкоуровневые обычно, ну JVM
Читать полностью…
Ну то есть декомпиляция => изменение => компиляция это лишний шаг
Читать полностью…
Идея отлично ложится на js/джаву подобных языках, где есть абстракция для vm
Читать полностью…
Наверное в случае натива строить аст очень больно
Читать полностью…
Машинный код тоже можно патчить, но это неприятно и неудобно
Читать полностью…
Вообще аст вряд ли будет сохраняться после компиляции, скорее всего компилятору придётся его собирать из уже скомпилированных файлов библиотек
Читать полностью…
Слишком общий вопрос )
Знаете же, хорошо поставленный вопрос содержит половину ответа 😉
В целом, ИИ-агенты сейчас уже неплохо отвечают на вопрос типа что надо изучить чтобы понимать вот эту фигню.
Точно работает хорошо, например в .net
Читать полностью…
Класс)
А в вм можно будет динамически создавать функции, классы (если предусмотрены) и подобные конструкции?)
Мне это в js безумно нравится
Где вы увидели что я в функции собираюсь что-то регулярками искать/переписывать???
И ни о каких goto речи вообще не было.
Пример с регулярками был дан как аналогия. Не более.
Моя идея скорее о макросах и патмате.
@artemkot4 @vexoxoid
В случае vm идея с построением ast из байт кода наверное работает хорошо, если заняться реализацией, но в случае натива нужно очень много думать
Читать полностью…
Понимаю. У меня язык на llvm, поэтому отталкиваюсь от своего опыта
Читать полностью…
Суть в том, чтобы представить общее представление ast, которое будет стабильно и предоставить программисту удобный интерфейс без знаний того, как работает язык в более низком представлении
Читать полностью…
Мы можем изменять сам байткод непосредственно
Читать полностью…
Но в общем смысле мы получаем представление, изменяем что нам надо для изменяемой функции и дальше представление передаётся компилятору, который построит изменённую функцию
Читать полностью…
Тут скорее нужен аст для самого программиста, который будет менять функцию
Читать полностью…
Обычно там байт-код. Байткод можно патчить, но АСТ там не пахнет.
Читать полностью…
Возможно это даже упростит задачу унификации
Читать полностью…
Тоже думал ваши думы закинуть и спросить что мне изучить
Читать полностью…
нулан, может не совсем так. там всё же модификация ИЛ, а не АСТ
Читать полностью…