abcdef
Ты наверно издеваесся... PASCALS и BERO одно и то же, разница в том, что у Беро уже готовый модуль ассемблирования убери его и получиться полный со всеми паскалевыми выпендрезами компилятор в байт код, прикрепляю закоментированую версию, сравни их и увидиш, даже функции одни и те же... Гы...
Там где в Ассемблере я закоментил можно прочитать закоментировать Header вызов (это в нашем случае функция системного пула) и раскоментить создание байт кода...
Осталось в Беро сделать только одно перевести с МакроАссемблера на ява ассемблер (прямо тупо заменяя строки типа
OPMul:
begin
OCPopEBX;
OCPopEAX;
OCIMulEBX;
OCPushEAX;
на
OPMul:
begin
Pop2;
iMul;
BiPush;
или круче, сразу в исполняемый class файл
OPMul:
begin
OC(88); //POP2 извлечение из стека двух чисел
OC(104); //IMUL умножение
OC(16); //BIPUSH помещение в стек результата
Вот и все дела...
Единственная доработка в подключении типа string и real
а так как он компилит сам себя, то и отладка происходит сразу (единственная неудобство, что он ошибки если есть тоже в себя пишет, поэтому приходица типа test.exe переименовывать в test.txt и читать в какой строке ошибка!!!)
Посмори, если какие функции иль ещё чиво не понятно, я опишу их поподробнее, а так получица что из PASCALS мы просто тупо сделаем BERO и прикрутим JAsm... Гы... нафига мартышкин труд, если уже все готово...
Переменные в таблице переменных
Типы в таблице типов
Массивы описаны
Вызовы функций и т.д т.п можно сразу запихивать в пул в функции Header
после ассемблера нам доступен размер кода и смещения...
Короче уже все есть, надо просто сесть и перевести с одного асма на другой!!! И получим систему круче чем МР так как исходники будут открыты...
Если хочешь поэксперементируй с функцией Header типа запиши вместо:
это сигнатура PE файла
это сигнатура class файла (наше изболевшее CAFEBABE в CHR представлении)