PC-01 Lviv
http://pc01.lviv.ua/forum/

Компилятор в компиляторе.
http://pc01.lviv.ua/forum/viewtopic.php?f=8&t=384
Page 1 of 1

Author:  als [ 30 Dec 2020, 13:39 ]
Post subject:  Компилятор в компиляторе.

Вот подумал, а может все таки существует такое.

А существует ли (желательно паскелеподобный) компилятор в компиляторе ?
Для понятности о чём речь выкладываю вот такой код.
Code:
program Pr;
var Code:array[0..1000] of Byte;
Var source:string;
begin
  source:='program Privet; {$APPTYPE CONSOLE} begin Writeln('+chr(39)+'Привет мир!'+chr(39)+');end.';

  Compile(source,Code);

asm
mov eax, offset Code;
jmp eax;{или же call eax;}
end;

end.
Пояснение. В таком компиляторе есть некая процедура Compile(source:string;var m:array of Byte);
которая строку-с-исх.кодом-source-типа-string (или же в виде массива-с-исх.кодом, не важно), скомпилирует в машинный код, в масив CODE которой можна запустить на исполнение.

Самому написать свой мини-FASM не предлагать!
Просто думаю может всё таки существует готовый да еще и паскелеподобный! :-)
Да вообще, все равно какой лишь бы можна было разобраться.
Заранее благодарен.

Author:  DenVW [ 17 Apr 2024, 12:36 ]
Post subject:  Re: Компилятор в компиляторе.

Да, такие инструменты существуют, и их называют "встроенными компиляторами" или "динамическими компиляторами". Они позволяют компилировать исходный код во время выполнения программы. В Pascal подобные инструменты известны как "встроенные компиляторы" или "JIT компиляторы" (Just-In-Time).

В стандартной библиотеке Pascal такие инструменты обычно отсутствуют, но вы можете использовать сторонние библиотеки или фреймворки, такие как LLVM, чтобы добавить JIT-компиляцию в ваш проект на Pascal.

С помощью JIT-компиляции вы можете динамически компилировать исходный код в машинный код и выполнить его внутри вашей программы. Однако написание собственного JIT-компилятора может быть довольно сложной задачей из-за необходимости понимания архитектуры процессора и работы с низкоуровневыми инструкциями.

Если вы не хотите писать собственный JIT-компилятор, вы можете искать сторонние библиотеки или фреймворки, которые предоставляют эту функциональность для Pascal.

Page 1 of 1 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/