JIT компиляция

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

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

JIT компиляция

Сообщение Azazaz » 02.12.2016 14:41:20

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

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

Добавлено спустя 5 минут 52 секунды:
Вроде этого: С++ JIT
Azazaz
новенький
 
Сообщения: 34
Зарегистрирован: 21.04.2015 20:00:03

Re: JIT компиляция

Сообщение vitya007 » 02.12.2016 14:59:52

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

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

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


Нету и маловероятно что будет. Можешь воспользоваться Lua(тема ниже) паскальскрипт
vitya007
новенький
 
Сообщения: 32
Зарегистрирован: 10.05.2011 22:23:27

Re: JIT компиляция

Сообщение runewalsh » 02.12.2016 15:08:34

Предложу либо самому формировать и компилировать код для LLVM (сам не пробовал, по готовому AST должно быть несложно), либо генерировать функции на паскале, вызывать компилятор извне и загружать результат как библиотеку.
Аватара пользователя
runewalsh
постоялец
 
Сообщения: 297
Зарегистрирован: 27.04.2010 00:15:25

Re: JIT компиляция

Сообщение Azazaz » 02.12.2016 15:32:13

Видимо понадобиться колупать asm. Может кто-нибудь знает библиотеку дизассемблера которая может распарсить переданный бинарный код на ассемблерные мнемоники?
Azazaz
новенький
 
Сообщения: 34
Зарегистрирован: 21.04.2015 20:00:03

Re: JIT компиляция

Сообщение Дож » 02.12.2016 15:56:02

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

Можно пытаться компилировать модуль в объектник и пытаться своими силами с ним слинковаться, см. тему
viewtopic.php?f=1&t=3961
там shade выкладывал свои наработки по этой теме.
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 634
Зарегистрирован: 12.10.2008 16:14:47

Re: JIT компиляция

Сообщение olegy123 » 02.12.2016 18:32:42

у DWScript - написано что jit умеет делать.
olegy123
постоялец
 
Сообщения: 143
Зарегистрирован: 25.02.2016 12:10:20

Re: JIT компиляция

Сообщение *Rik* » 02.12.2016 19:51:44

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

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

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

В составе Lazarus идет Pascal Script. Можете мою поделку использовать, у меня не только функции, приложения масштаба предприятия на скриптовом движке строятся.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 332
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: JIT компиляция

Сообщение Azazaz » 13.12.2016 23:37:15

В общем в 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;

Соответственно с адресом процедуры.
Azazaz
новенький
 
Сообщения: 34
Зарегистрирован: 21.04.2015 20:00:03


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru