Самая переносимая библиотека для генерации динамического кода?

Я ищу наиболее переносимую библиотеку ассемблера, например asmjit или jitasm.

Когда я говорю «наиболее портативный», я имею в виду, что он имеет наибольшую поддержку для самых разных архитектур. Язык не имеет большого значения, но C++ был бы лучшим решением, особенно в сочетании с GCC.

Важными для меня архитектурами являются x86/64, PowerPC и ARM.


person LiraNuna    schedule 11.09.2009    source источник


Ответы (5)


DynASM, используемый LuaJIT, поддерживает x86, x64, ARM, MIPS и PowerPC.

person Vladimir Panteleev    schedule 24.01.2012

После долгих поисков и исследований я обнаружил, что LLVM — лучшая JIT-библиотека. Все они поддерживают только x86/x86_64, и только LLVM поддерживает x86/x86_64 и КПП/ППК64.

Итак, я объявляю его самым портативным... Если кто-нибудь найдет лучший, пожалуйста, поделитесь им.

person LiraNuna    schedule 09.10.2009
comment
Когда-то это было так, но успех убил его для общих целей JIT. Теперь это слишком жирно, слишком сложно и слишком привязано к статическим языкам, включая C++. - person Lothar; 05.12.2015

Итак, GNU предлагает вам libjit. Высокая переносимость для выбранной вами архитектуры, хорошо документировано и предлагает интерфейс C++. Будучи вашим компилятором GCC, я не могу придумать лучшего предложения.

person Alexandre Bell    schedule 11.09.2009

Вам может быть интересен NanoJit. Он легче, чем LLVM, хотя и ужасно недостаточно документирован (есть хороший учебник здесь... и на этом все). Поддерживаемые архитектуры:

  • x86
  • x64
  • РУКА
  • MIPS
  • PowerPC
person kirbyfan64sos    schedule 06.11.2014

«x86/64, PowerPC и ARM» — это не очень широкий спектр архитектур. Многие виртуальные машины с открытым исходным кодом должны поддерживать этот набор, включая Mono. Что вы собираетесь с этим делать?

поддерживаемые платформы Mono для JIT включают (частичный список здесь - полный список в ссылке):

  • X86
  • X86-64
  • IA64 (Итаниум)
  • Мощность ПК
  • РУКА
  • MIPS
  • Альфа
person Sam Harwell    schedule 11.09.2009
comment
jitasm позволит вам генерировать ассемблерный код на лету с возможностью его выполнения. Mono будет компилировать код в автономном режиме. Не совсем то, что я хочу. - person LiraNuna; 12.09.2009
comment
Mono предварительно компилирует C# в IL и выполняет JIT-компиляцию IL на лету. - person Franci Penov; 12.09.2009
comment
тогда мне пришлось бы кодировать оболочку, которая компилируется в IL. Не совсем эффективно и далеко от того, что я просил. - person LiraNuna; 12.09.2009