Недостатки компиляции во время выполнения с использованием внешнего компилятора с dlopen для JIT-подобной функциональносC++

Программы на C++. Форум разработчиков
Anonymous
Недостатки компиляции во время выполнения с использованием внешнего компилятора с dlopen для JIT-подобной функциональнос

Сообщение Anonymous »

Я реализовал JIT-подобную компиляцию в своем приложении, используя следующий подход:
  • Используя информацию, определенную во время выполнения, сгенерируйте код C++ на - the-fly
  • Используйте внешний компилятор (g++, clang) для компиляции сгенерированного кода во время выполнения.
  • Загрузите полученный общий объектный файл с помощью dlopen( ) и dlsym()
  • Выполнить динамически загружаемый код
Сам код работает и, кажется, имеет лучшую производительность , хотя я еще не проверял его полностью. Я предполагаю, что на данный момент стандартным способом реализации этого является использование LLVM, и описанный выше подход не является распространенным. Я предполагаю, что должны быть веские причины избегать такого подхода. Итак, не могли бы вы рассказать мне о недостатках вышеупомянутого наивного подхода?
К вашему сведению: фактическая реализация находится здесь https://github.com/HiroIshida/tenkai/bl ... 06d6a4/src /flatten.cpp#L106

Подробнее здесь: https://stackoverflow.com/questions/790 ... or-jit-lik

Вернуться в «C++»