Показать сообщение отдельно
Старый 29.11.2008, 03:05   #102
satan
Нуждающийся
 
Регистрация: 10.02.2007
Сообщений: 99
Написано 18 полезных сообщений
(для 28 пользователей)
Re: создание MIDletPascal compiler'a

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 типа запиши вместо:
  OCP:=0;
  OCS('MZ
это сигнатура PE файла
  OCP:=0;
  OCS('Кюєѕ
это сигнатура class файла (наше изболевшее CAFEBABE в CHR представлении)
Вложения
Тип файла: zip Pascal.zip (14.0 Кб, 494 просмотров)

Последний раз редактировалось satan, 29.11.2008 в 03:22.
(Offline)
 
Ответить с цитированием