JIT компиляция

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
Azazaz
новенький
Сообщения: 41
Зарегистрирован: 21.04.2015 19:00:03

JIT компиляция

Сообщение Azazaz »

Есть такая вещь в fpc? Может библиотеки есть специальные?

Добавлено спустя 2 минуты 22 секунды:
Меня интересует конструирование незамысловатых функций во время исполнения.

Добавлено спустя 5 минут 52 секунды:
Вроде этого: С++ JIT
vitya007
новенький
Сообщения: 32
Зарегистрирован: 10.05.2011 22:23:27

Сообщение vitya007 »

Azazaz писал(а):Есть такая вещь в fpc? Может библиотеки есть специальные?

Добавлено спустя 2 минуты 22 секунды:
Меня интересует конструирование незамысловатых функций во время исполнения.

Добавлено спустя 5 минут 52 секунды:
Вроде этого: С++ JIT


Нету и маловероятно что будет. Можешь воспользоваться Lua(тема ниже) паскальскрипт
Аватара пользователя
runewalsh
энтузиаст
Сообщения: 579
Зарегистрирован: 27.04.2010 00:15:25

Сообщение runewalsh »

Предложу либо самому формировать и компилировать код для LLVM (сам не пробовал, по готовому AST должно быть несложно), либо генерировать функции на паскале, вызывать компилятор извне и загружать результат как библиотеку.
Azazaz
новенький
Сообщения: 41
Зарегистрирован: 21.04.2015 19:00:03

Сообщение Azazaz »

Видимо понадобиться колупать asm. Может кто-нибудь знает библиотеку дизассемблера которая может распарсить переданный бинарный код на ассемблерные мнемоники?
Аватара пользователя
Дож
энтузиаст
Сообщения: 900
Зарегистрирован: 12.10.2008 16:14:47

Сообщение Дож »

Можно при помощи внешнего fpc компилировать всё в дин. библиотеку и его подгружать.

Можно пытаться компилировать модуль в объектник и пытаться своими силами с ним слинковаться, см. тему
viewtopic.php?f=1&t=3961
там shade выкладывал свои наработки по этой теме.
olegy123
долгожитель
Сообщения: 1643
Зарегистрирован: 25.02.2016 11:10:20

Сообщение olegy123 »

у DWScript - написано что jit умеет делать.
Аватара пользователя
*Rik*
постоялец
Сообщения: 453
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал
Контактная информация:

Сообщение *Rik* »

Azazaz писал(а):Есть такая вещь в fpc? Может библиотеки есть специальные?

Добавлено спустя 2 минуты 22 секунды:
Меня интересует конструирование незамысловатых функций во время исполнения.

Добавлено спустя 5 минут 52 секунды:
Вроде этого: С++ JIT

В составе Lazarus идет Pascal Script. Можете мою поделку использовать, у меня не только функции, приложения масштаба предприятия на скриптовом движке строятся.
Azazaz
новенький
Сообщения: 41
Зарегистрирован: 21.04.2015 19:00:03

Сообщение Azazaz »

В общем в Lazarus x32 есть пакет lazarus\components\fpdebug\fpdebug.lpk. В пакете модуль fpdbgdisasx86, в модуле процедура:

Код: Выделить всё

procedure Disassemble(var AAddress: Pointer; const A64Bit: Boolean; out ACodeBytes: String; out ACode: String);

Передайте в нее адрес какой-нибудь процедуры или функции, или используйте это:

Код: Выделить всё

procedure GoRET(Proc: Pointer);
var CB, C: String;
begin
 repeat
  Disassemble(Proc, false, CB, C);
  Writeln(CB:25, ' ', C);
 until CB = 'C3';
end;

Соответственно с адресом процедуры.
Ответить