Saitei | Дата: Вторник, 30 Июня 2015, 16:05 | Сообщение # 1 |
старожил
Сейчас нет на сайте
| Начал вот баловаться с генерацией LLVM байткода и хотелось бы научить мою С++ программу компилировать его в исполняемый файл. Компилятор должен быть не особо большим + было бы здорово, если можно было бы его "вшить" в мою С++ программу.
Заранее благодарю за помощь
|
|
| |
Xakep | Дата: Вторник, 30 Июня 2015, 16:44 | Сообщение # 2 |
めちゃくちゃちゃ
Сейчас нет на сайте
| Цитата Saitei ( ) Компилятор должен быть не особо большим + было бы здорово, если можно было бы его "вшить" в мою С++ программу. вшивать это плохо, почти все компиляторы не так работают, они генерируют байт код, а потом уже линкуются, компилятор должен уметь использовать линковщик, но линковщик не должен быть вшит в программу. А в случае с llvm то тут вообще красота, распространяется под лицензией FreeBSD, следовательно ты все бинарники можешь распространять даже в коммерческом проекте, а там как раз все уже есть, для оптимизации сгенерированного байткода можно использовать программу opt, для генерации в объектный файл, или в ассемблерный код можно использовать llc, можно просто выполнить твой байткод через lli, можно не большой скрипт к нему подписать bash или bat чтобы он запускал твой байткод и в продакшн ) Была еще какая-то тулза, которая вшивала байткод в exe, но я не помню как уже называется. В общем самый оптимальный как по мне, это просто генерировать несколько bc файлов (каждому твоему исходнику соостветствует свой bc, и можно еще смотреть, изменялся ли файл, чтобы лишний раз не перекомпилировать) и потом через llvm-link слинковать в общий байткод ну и оптимизировать все это дело через op, и просто распространять свою программу с lli ну а там думаю додумаешь как лучше организовать это )) Получится на подобие C# т.е. JIT компилятор.
|
|
| |