![]() |
Ответ: создание MIDletPascal compiler'a
satan, да я не про верхний уровень компиляции, я всегда за рекурсию, тем более при сложных взаимосвязях, результаты рекурсии будут единичные вызовы в произвольных местах и на любой итерации, функции запихивающей в массив новую команду, просто для ассемблера будет полезно если будет вестись контроль передаваемых данных. а насчет адреса вызова, то это ведь java, ей нужно только имя переменной/метода она сама работает с
адресами памяти Serg153 зачем использовать временные переменные? в стеке достаточно места... |
Ответ: создание MIDletPascal compiler'a
Цитата:
ну я так понял из постов Satan`a - >> ...но тут опять грабли, строка вида 1+a+2+b+3+c Может вырасти в очень длинный код на ассемблере, поэтому её надо оптимизировать, тобишь привести к виду a+b+c +6, что бы уменьшить код конечного файла, что бы не падал компилятор от переполнения... >> ...вызовы функций внутри вызовов функций и рекурсивные функции просто умрут ... --- что при компиляции сложных выражений будет переполнение стека Джавамашины... ну в общем мидлет упадёт... :=) - но в принципе я в это нелезу... пока немного сложновато втыкать в ваш диалог :=) 2satan - ммм... скачал я ide - у мню дельфи 7 - так ругается при открытии формы и компиляции... типа TActionMainMenuBar - not found... ToolBar.. properties не определно.. и тд... может что поправить надо? |
Re: создание MIDletPascal compiler'a
Надо поставить Турбо Делфи (или скачать Borland Delphi 10 Lite) она 30 мб весит
получицо такая вот как в аттаче хренотень как на картинке(в смысле исходники и интерфейс аналогичный... ![]() А так проверить в работе прикладываю в аттаче Система клавишь как в делфи... тоисть Ctrl+Shift+I увеличить отступ Ctrl+Z откат и т.д.... Подсветка паскаля и ассемблера(настраиваемая...) ну и т.д. |
Ответ: создание MIDletPascal compiler'a
Вложений: 1
satan, посмотрел исходники, хорошо изложил!
теперь нужно переводить под синтакис java и отладить, это где-то 30% от все работы... несколько начальных шагов я предпринял но переделывать еще много, результат в прикрепленном файле (генерирует asm-файл), если интересны готовые решения/идеи глянь в мой файл "compile.pas" - тотже алгоритм, только без поддержки подпрограмм/типов/массивов Что нужно доделать: 1. окончательно вычистить от кода, отвечающего за работу с памятью 2. дописать разделение команд загрузки/сохранения в переменную на работу с локальными переменными/глобальными/массивами 3. добавить инструкцию define, которая будет связывать методы из внешних классов и их параметры вызова, с внутренним именем в исходном коде, как описывал ранее в будующем: добавить типы данных String/StringBuffer/Byte и разделить команды для их обработки ___ p.s. жду изменений... |
Ответ: создание MIDletPascal compiler'a
Парни, я тока скатал pascal на комп, скатал ваши ide, не полушается што-то компилировать. Подскажите што-делать.
|
Ответ: создание MIDletPascal compiler'a
мои исходники можно компилить в Turbo Pascal 6 и выше. Размеры дистрибутива от 1 до 8 мб (после установки проверить пути к каталогам исходников и tpu библиотекам, и должен существовать каталог для компиленных файлов), также в меню compile отметить destination disc. Также можно откомпилировать в delphi 7 и ниже, для этого достаточно файлов: dcc32.exe; *.cfg; каталоги lib; source. dcc-компилятор командной строки; в файле cfg-пути к каталогам. размеры зависят от кол-ва библиотек, и в пределах 1..50 мб
|
Ответ: создание MIDletPascal compiler'a
мгммгм... возможно уже спрашивал -)
можно ли сделать из Jar файла - просто жавовское приложение - не для телефона - ЕХЕ файл? --- если такая возможность есть - то тогда можно присобачить уже готовый жаваасемблер - Жасмин (вроде он фри) только сделать Jar to eхе... --- модернизировать иде - добавить ДВФ файлы - в которых возможно описать Паскальслово - от него Java строки - от них Jasm строчки - от них Байт_код.... а также всяческие хелп строки... тогда легко можно будет модернезировать язык - Иде не меняется - только изменются разные справочные базы... |
Ответ: создание MIDletPascal compiler'a
нецелесообразно переделывать код генерации под процессор x86, хотя не сложно модифицировать команды asm-листинга. Лучше использовать компилятор выложенный satan'ом, только добавить набор стандартных функций. если не охота возиться с компилятором можно написать набор МР-библиотек: хоть для Turbo Pascal, хоть для Delphi -делал так когда-то но заглушками, для проверки синтаксиса программы
|
Re: создание MIDletPascal compiler'a
Прива все!!!
abcdef Дружище... Посмотрел твою модификацию.... Ээээээ... Ты зачем внутренний стек меняешь то? Не надо... Этот стек сформирован для внутренней нашей виртуальной машины... То есть функция GenOp просто добавляет в массив Code[] команды и параметры для них. Приблизительно после разбора проги получается примерно следущее в стеке 39 10 28 61 28 77 41 3 переводим на полурусский OPJmp 10 -> Перепрыгнуть через 10 команд OPLdC 61 -> Загрузить Сhar(букву) A - код 61 OPLdC 77 -> Загрузить Char(букву) F - код 77 OPCall 3 -> Вызвать подпрограмму с номером 3 в IdentTab Вот внутренний ассемблер и делает перевод в опкод i386 а нам надо просто перевести в опкод Java... Поэтому стек не надо переделывать, он уже готов... Нам надо перекроить всего 2 функции 1. AssembleAndLink (Она перекраивает наш стековый байт код в машинный код) 2. В линкере сформировать константный пул из IdentTab Ну и в конце концов связать пул и код.... |
Re: создание MIDletPascal compiler'a
Кстати кто волокет в грамматиках могу подкинуть компилятор компиляторов (исходники) и транслятор Java->Pascal
Транслятор правдо доделывать надо, а вот компилер компилеров работает на ура, создает сразу готовый проект компилятора для Delphi |
Ответ: создание MIDletPascal compiler'a
Да Кинь плиз!
|
Ответ: создание MIDletPascal compiler'a
вернусь к IDE, как к одному из ключевых моментов компилятора...
неудалось мне использовать ide от satan - ненашёл полный набор для сунедита... --- вобщем начал писать на Д7 - редактор - будет Rich текст с подсветкой синтаксиса и предварительной трансляции в Паскаль-подобный язык... на этапе парсера возникла небольшая проблема с индетификацией ещё необьявленных переменных,функций, процедур... например есть текст var a1,a2,a3 : integer; c1 : command; --- может немножко поменяем Синтаксис Языка? например так Var Integer : a1,a2,a3; Command : c1; ??? --- тогда и в параметрах функций писать func name( string : s1,s2;integer : byte a1); ??? надоели begin end - может заменить на { } - а многострочные комменты оформлять в виде /* comment */ ??? тем более редактор автоматом будет оформлять {} [] () --- определиться бы с ТИПАМИ переменных у нас их будет примерно: · boolean · char · integer · real · string · image · command · recordStore · http · resource Комплексные типы: · record · array если JAVA поддерживает байтовые - то можно добавить тип byte ? --- как вариант назвать компилятор MidletPScript - так как язык немного изменится... --- редактор на выходе будет выдавать - тут несколько вариантов: - текст на java - текст на j ассемблере - или на каком нибудь подобии языка... отдельным ЕХЕ сделать уже чисто компилятор исходника в CLASS и запускать его из Редактора... тогда можно будет использовать редактор для разных языков... --- попробую реализовать транслятор из Редактора в Java ассемблер (нашёл компилятор Жасмин) - вернее сперва в Java, затем в Жасмин... --- редатор на этапе набора текста будет осуществлять синтаксическую проверку, использовать "коде темплате", вывод в хелп окошко - файл помощи по конкретонму оператору, также при присоеденению к проекту файла рсиунка - обработает его с помощью pngout.exe - для сжатия картинки.... --- скоро выложу текст иде для тестирования... |
Ответ: создание MIDletPascal compiler'a
Вложений: 1
вот примерно так выглядит эта Иде... :=)
в Зипе - как бы рабочая папка компилятора --- пока всё недоделано.. чиста на Предварительный вид --- доделаю - хелпокно на каждый оператор + коде джампер + синтаксичесуий анализатор кода и выложу исходники - пользую D7 |
Ответ: создание MIDletPascal compiler'a
Проект совсем умер? Понимаю, что оффтоп, но уж больно долго тема молчит. Не забили ли разработчики на это дело из-за недостатка внимания к проекту со стороны пользователей? Было бы обидно.
|
Ответ: создание MIDletPascal compiler'a
не внимание нужно, а помощь... (это ведь не развлечение игрушки писать, а еще проектировать и тестировать надо долго...)
наверное ждем пока другие сделают?... |
Часовой пояс GMT +4, время: 05:01. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot