Ответ: Исходники MP получены!
Вложений: 1
Пояснения:
сборка описана в readmerus.txt ---- поправил индексацию массивов, т.е. в паскале стартовый индекс массива может быть любым, за счет того что после вычисления индекса элемента из него вычитается стартовый индекс. Если начальный индекс = 0, то его можно исключить, что я и сделал, тем более что всегда стараюсь чтоб массив начинался с нуля ------- синтаксис inline: __ 1-я модификация: inline(b : byte); - прямая запись байта в конструируемый код. __ 2-я модификация: inline(type_str, param1_str, param2_str, param3_str : string); - конструктор указателя на метод или поле в константном пуле, все параметры должны быть строками текста, (строковые переменные не допускаются). где type_str: "getstatic" получение статического поля класса "putstatic" установка статического поля в классе "getfield" перенос поля из объекта "putfield" установка поля в объекте "invokevirtual" вызывает метод экземпляра, основываясь на типе времени выполнения "invokenonvirtual" вызывает метод экземпляра, основываясь на не виртуальном типе "invokestatic" вызов метода класса (статического метода) ____ PHP код:
можно писать любой java-байт-код, оперируя параметрами стека, только если его получать в MidletPascal'е, то стек нужно приводить под известные в MP типы. __ если указывать произвольные методы, то скорее всего верификатор MP будет, выдавать ошибки, но файл "M.class" будет создан. --- для анализа программ удобно использовать java-декомпилер "forum.boolean.name\MidletPascal\Основной Форум\Создание MidletPascal compiler'а\JD.exe", просматривая как собраны команды, и какие у них ,байт-коды |
Ответ: Исходники MP получены!
Цитата:
|
Ответ: Исходники MP получены!
Piligrim, прямую записью байт-кода будут писать редко, и только при необходимости, тем более это поможет лучше разбираться в основах java.
__ а тот вариант вы что предлагали: подключать класс-файлы как интерфейсные модули, и чтобы это работало с любыми классами, в ближайшем будущем не получится т.к.: 1. Нужно добавить все типы java (в итоге получится нечто похожее на " Canterbury Pascal for J2ME"). 2. Делать нашлепки кода к каждой операции, для преобразования типов. 3. Добавлять конструкции которые не предусмотрены кодогенератором MidletPascal'я |
Ответ: Исходники MP получены!
Скажите чем лучше эти строки? Из них можно вернуть любые данные? Им можно передать любые данные?
Насколько выше вероятность допустить ошибку? На мой взгляд в разы. Если все это только для того чтобы не ставить Java SDK, то эти несчастные 200Mb того не стоят. Цитата:
а что-то вроде Цитата:
|
Ответ: Исходники MP получены!
Народ, предлогаю сделать нестандартные расширения синтакстса языка отдельным дополнением к программе, а не добавлять в изначальный билд. И чтобы сейчас занимались не добавлением не сильно затребованных функций, а исправлением глюков, доработкой уже имеющихся возможностей и оптимизацией. Зачем так настойчиво делать то, что будут использовать считанные люди, а то, с чем работают многие оставлять на потом
|
Ответ: Исходники MP получены!
Байт код пускай будет...
ведь потом появится (наверное) декомпилятор jar в МПаскаль... и для кода, который декомпиль несможет простроить паскалевские конструкции - пригодится байтКод... |
Ответ: Исходники MP получены!
Цитата:
|
Ответ: Исходники MP получены!
вот как сделано в версиях TurboPascal:
есть стандартный модуль "system.pas", в нем процедуры и функции использующие inline для расширенных возможностей. Т.о. можно все компилить в MP, вести отладку, смотреть как это организовано и т.д., не зависеть от большинства java-методов. Т.к. константный пул MP не поддерживает 64-битные записи, можно временно сделать отдельный класс с этими элементами, и обращатся к нему для сохранения результатов, иначе если сохранять данные в классе system.pas необходимо стек приводить под int-переменную. текущими возможностями байт-кода пока нельзя записать некоторые конструкции, поэтому вот расширение: type_str: "utf8" - ссылка в конст.пуле на utf-строку "string" - ссылка на string-переменную "class" - ссылка на класс "nameandtype" - ссылка на имя и тип ____ вот простейший пример, библиотека "Lib_memclean.java" 365 bytes. а вот код на MidletPascal: Код:
procedure memclean; ___ прямая работа со стеком, позволить создавать программы, быстрее аналогичных стандартных java-компиляторов, например счетчик циклов можно хранить постоянно в стеке, а не загружать и сохранять в переменную и .т.д... |
Re: Исходники MP получены!
Не пойму я вас ребят! У вас 2 исходника на 2 языках программирования и вы до сих пор не поймете, что аналогичный результат был бы и в том случае, если бы их не было!!!
Объясняю почему. Во первых, на вскидку я исправил работу с константами, переменными и типами, но это только начало... Компилятор (вернее транслятор) не позволяет сделать даже простых паскалевских стандартизированый действий... CONST a = 10000; b = a + 2000; Вот один из примеров. То есть такие приятности и малости как CASE, WITH и ещё море возможностей просто отключены и не прописаны... Главное что в нем есть, это обработка выражений и загрузка библиотек... То есть по сути компилер уже дает нам доступ к JAVA в полной мере... Единственный файл который надо дорабатывать или к чему я склоняюсь полностью переробатывать - PARSER.C или PASPARSER.PAS... Теперь посмотрите на вот такой замахон Код:
bytecode_append(current_block^.code, new_); О какой доработке может идти речь? Его полностью переписывать надо... Вы уже начали прикручивать что то дополнительное, хотя основное не работает... Мля я с дуру стер исправленую версию (сам правил) на Си, которая являлась консольным компилятором... В итоге получил не работающую версию... Даю на вход ему ProjectMobilePascal.exe list.txt Где list.txt список компилируемых модулей, на выходе строчка типа компилирую "PL/2" и вываливается компилятор??? abcdef Дружище, ну ты то прекрасно понимаешь, что inline функция - это по сути выдирание из lib файла данных, так зачем городить огород если всю яву можно выдернуть из архивов??? Так не проще занятся доработкой или разработкой Парсера Паскаля для начала, что бы иметь хотя бы отдалённое напоминание Турбо паса (про FPC и Delphi уже молчу)!!! |
Ответ: Исходники MP получены!
satan, давай свою работающую версию!
ни один пример не компилиться в твоей.. |
Re: Исходники MP получены!
Ы....
Так оно и не будет компилица... Надо перевести RD_assignment_or_procedure_call функцию и ещё пару - тройку закоментированых в коде... Я просто выкинул версию для ознакомления Паскаль программистам, которые в Си ни бум-бум. Так вот, посмотри на работу компилятора в Delphi дебаггере... И сразу станет ясно как работает компилятор... Да в принципе так же как и все компиляторы, за исключением того, что кодогенератор на половину вынесен в отдельный блок, а наполовину внедрён в парсер... А пример я же уже сказал, объявления типов, переменных и констант я по возможности исправил... Теперь надо идти дальше, дописывать вышеуказанную функцию и вперёд на отладку... У меня к сожалению пока времени нет, было, я сделал все возможное, перевел львиную долю всех функций!!! Будет время, так же исправлю и на Си компилятор, что бы сравнивать полученый файлы готовые... А когда комипляторы заработают одинаково, то уже буду думать о расширении и добавлении... Но скорее всего придется заново переписать компилер и отделить мух от мяса. |
Ответ: Исходники MP получены!
hey guys,
i think the MP project exceeds the russian/ukranian community, any chance to have an english forum? or an IRC channel at least? i do not understand a word of russian -i speak spanish natively- but at least i can read/write english. btw, what about publishing the source code to sourceforge or googlecode (i saw empty projects in both)? just uploading the source as Niksa sent it to you will help to open the project to the world. im asking you for it since you are in charge, i have the source code already but know of people that doesnt. thanks |
Ответ: Исходники MP получены!
Hi Javier,
No English forum or IRC channel there, but you can start new topic with name "English discussion thread" or something like that. I am creater sourceforge project. But I never worked with SVN. If you can start SVN project, please tell me about it in private message. I add you in sourceforge project administrators. |
Ответ: Исходники MP получены!
Цитата:
Насколько я помню, было решено вести проект на гугле, и Piligrim занялся этим: http://code.google.com/p/midletpascal/ Надо как-то согласовывать действия, а то, глядя на эту ветку форума, создаётся впечатление лёгкого хаоса. |
Ответ: Исходники MP получены!
Цитата:
|
Часовой пояс GMT +4, время: 16:19. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot