forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   создание MIDletPascal compiler'a (http://forum.boolean.name/showthread.php?t=6385)

abcdef 13.01.2009 17:57

Ответ: создание MIDletPascal compiler'a
 
satan, да я не про верхний уровень компиляции, я всегда за рекурсию, тем более при сложных взаимосвязях, результаты рекурсии будут единичные вызовы в произвольных местах и на любой итерации, функции запихивающей в массив новую команду, просто для ассемблера будет полезно если будет вестись контроль передаваемых данных. а насчет адреса вызова, то это ведь java, ей нужно только имя переменной/метода она сама работает с
адресами памяти

Serg153 зачем использовать временные переменные? в стеке достаточно места...

Serg153 13.01.2009 18:56

Ответ: создание MIDletPascal compiler'a
 
Цитата:

Сообщение от abcdef (Сообщение 94637)
Serg153 зачем использовать временные переменные? в стеке достаточно места...

---
ну я так понял из постов Satan`a -
>>
...но тут опять грабли, строка вида 1+a+2+b+3+c
Может вырасти в очень длинный код на ассемблере, поэтому её надо оптимизировать, тобишь привести к виду a+b+c +6, что бы уменьшить код конечного файла, что бы не падал компилятор от переполнения...
>>
...вызовы функций внутри вызовов функций и рекурсивные функции просто умрут ...
---
что при компиляции сложных выражений будет переполнение стека Джавамашины... ну в общем мидлет упадёт... :=) - но в принципе я в это нелезу...
пока немного сложновато втыкать в ваш диалог :=)

2satan - ммм... скачал я ide - у мню дельфи 7 - так ругается при открытии формы и компиляции...
типа TActionMainMenuBar - not found...
ToolBar.. properties не определно.. и тд...
может что поправить надо?

satan 13.01.2009 22:00

Re: создание MIDletPascal compiler'a
 
Надо поставить Турбо Делфи (или скачать Borland Delphi 10 Lite) она 30 мб весит

получицо такая вот как в аттаче хренотень как на картинке(в смысле исходники и интерфейс аналогичный...

А так проверить в работе прикладываю в аттаче
Система клавишь как в делфи... тоисть Ctrl+Shift+I увеличить отступ Ctrl+Z откат и т.д....

Подсветка паскаля и ассемблера(настраиваемая...) ну и т.д.

abcdef 15.01.2009 22:00

Ответ: создание MIDletPascal compiler'a
 
Вложений: 1
satan, посмотрел исходники, хорошо изложил!
теперь нужно переводить под синтакис java и отладить, это где-то 30% от все работы...
несколько начальных шагов я предпринял но переделывать еще много, результат в прикрепленном файле (генерирует asm-файл), если интересны готовые решения/идеи глянь в мой файл "compile.pas" - тотже алгоритм, только без поддержки подпрограмм/типов/массивов

Что нужно доделать:
1. окончательно вычистить от кода, отвечающего за работу с памятью
2. дописать разделение команд загрузки/сохранения в переменную на работу с локальными переменными/глобальными/массивами
3. добавить инструкцию define, которая будет связывать методы из внешних классов и их параметры вызова, с внутренним именем в исходном коде, как описывал ранее

в будующем:
добавить типы данных String/StringBuffer/Byte и разделить команды для их обработки
___
p.s. жду изменений...

temned 16.01.2009 19:59

Ответ: создание MIDletPascal compiler'a
 
Парни, я тока скатал pascal на комп, скатал ваши ide, не полушается што-то компилировать. Подскажите што-делать.

abcdef 17.01.2009 00:35

Ответ: создание MIDletPascal compiler'a
 
мои исходники можно компилить в Turbo Pascal 6 и выше. Размеры дистрибутива от 1 до 8 мб (после установки проверить пути к каталогам исходников и tpu библиотекам, и должен существовать каталог для компиленных файлов), также в меню compile отметить destination disc. Также можно откомпилировать в delphi 7 и ниже, для этого достаточно файлов: dcc32.exe; *.cfg; каталоги lib; source. dcc-компилятор командной строки; в файле cfg-пути к каталогам. размеры зависят от кол-ва библиотек, и в пределах 1..50 мб

Serg153 23.01.2009 02:45

Ответ: создание MIDletPascal compiler'a
 
мгммгм... возможно уже спрашивал -)
можно ли сделать из Jar файла - просто жавовское приложение - не для телефона - ЕХЕ файл?
---
если такая возможность есть - то тогда можно присобачить уже готовый жаваасемблер - Жасмин (вроде он фри) только сделать Jar to eхе...
---
модернизировать иде - добавить ДВФ файлы - в которых возможно описать Паскальслово - от него Java строки - от них Jasm строчки - от них Байт_код.... а также всяческие хелп строки...
тогда легко можно будет модернезировать язык - Иде не меняется - только изменются разные справочные базы...

abcdef 23.01.2009 13:21

Ответ: создание MIDletPascal compiler'a
 
нецелесообразно переделывать код генерации под процессор x86, хотя не сложно модифицировать команды asm-листинга. Лучше использовать компилятор выложенный satan'ом, только добавить набор стандартных функций. если не охота возиться с компилятором можно написать набор МР-библиотек: хоть для Turbo Pascal, хоть для Delphi -делал так когда-то но заглушками, для проверки синтаксиса программы

satan 27.01.2009 01:21

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
Ну и в конце концов связать пул и код....

satan 27.01.2009 03:29

Re: создание MIDletPascal compiler'a
 
Кстати кто волокет в грамматиках могу подкинуть компилятор компиляторов (исходники) и транслятор Java->Pascal
Транслятор правдо доделывать надо, а вот компилер компилеров работает на ура, создает сразу готовый проект компилятора для Delphi

temned 27.01.2009 21:22

Ответ: создание MIDletPascal compiler'a
 
Да Кинь плиз!

Serg153 22.02.2009 13:59

Ответ: создание 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 - для сжатия картинки....
---
скоро выложу текст иде для тестирования...

Serg153 25.02.2009 12:58

Ответ: создание MIDletPascal compiler'a
 
Вложений: 1
вот примерно так выглядит эта Иде... :=)

в Зипе - как бы рабочая папка компилятора
---
пока всё недоделано.. чиста на Предварительный вид
---
доделаю - хелпокно на каждый оператор + коде джампер + синтаксичесуий анализатор кода и выложу исходники - пользую D7

pamalofeev 21.05.2009 07:29

Ответ: создание MIDletPascal compiler'a
 
Проект совсем умер? Понимаю, что оффтоп, но уж больно долго тема молчит. Не забили ли разработчики на это дело из-за недостатка внимания к проекту со стороны пользователей? Было бы обидно.

abcdef 21.05.2009 11:22

Ответ: создание MIDletPascal compiler'a
 
не внимание нужно, а помощь... (это ведь не развлечение игрушки писать, а еще проектировать и тестировать надо долго...)

наверное ждем пока другие сделают?...


Часовой пояс GMT +4, время: 05:01.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot