@firerun

Как скомпилировать код внутри скомпилированного кода?

Здравствуйте! очень интересует такой вопрос - что нужно для того чтобы написать на с++ компилятор ?
Если честно, даже не знаю как правильно сформулировать вопрос, я очень далеко от этой темы. Написал свой редактор для 3D c GUI интерфейсом, перспективы на него большие, но как сделать так чтобы из этого редактора я мог скомпилировать свое приложение в exe? (Как в движках Unity,UE4 и так далее) То-есть в моем редакторе есть текстовой редактор, в нем пишешь код на с++, и он этот код собирает в программу.
Вообще не понимаю как это устроенно, подключают к проекту какой-то компилятор с исходным кодом?, или что? Очень буду ждать ответа, заранее спасибо!
  • Вопрос задан
  • 181 просмотр
Пригласить эксперта
Ответы на вопрос 2
dollar
@dollar
Делай добро и бросай его в воду.
Писать компилятор с нуля не советую - это целая наука.
Погуглите, например, "opcodes list x86" - а потом решайте, надо ли оно вам.

Но вы можете подключить внешний компилятор к своему редактору. Благо многие работают через командную строку. Думаю, для вас не должно быть проблемой из своей программы запустить другую внешнюю консольную программу с параметрами.

А вообще сейчас идёт интересная мода - писать движок на быстром языке, типа C++, а пользователям давать возможность расширять функционал на другом встраиваемом языке, типа Lua, но может быть любой, хоть JS, хоть C#. Даже на C++ можно, но тогда удобнее вашу программу сделать библиотекой, а расширение пользователя будет основной программой. Конечно, в вашем конкретном случае эти модели могут быть неприменимы - это уже вам виднее.

Основное требование к встраиваемому языку - его простота в изучении и использовании. Ведь не все являются программистами, тем более на C++. Так что чем проще встраиваемый язык, тем шире у вас аудитория.
Ответ написан
Комментировать
@rPman
Готовые инструменты советую искать в инфраструктуре LLVM, это виртуальная машина, компиляторы и главное отличная поддержка огромного количества платформ. И главное у вас есть возможность запускать эти приложения в контролируемой вами песочнице, если я верно потелепатствовал о ваших целях.

С точки зрения использования это сложнее чем подключить какой-нибудь интерпретируемый популярный язык типа lua, но зато высокая производительность и гибкость.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы