OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Понедельник, 25 Июнь, 2018 20:26

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: клон ББ для gpcp-jvm
СообщениеДобавлено: Среда, 01 Июнь, 2011 17:51 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2505
Откуда: Россия, Ярославль
Скачал тут GPCP. без задачи осваивать как-то неинтересно было. выдумал задачу.
как-бы результат вот http://bitbucket.org/petryxa/jvm-bb
вот, если у кого есть желание и отличное от нуля знание джавы, типа того :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: клон ББ для gpcp-jvm
СообщениеДобавлено: Среда, 01 Июнь, 2011 20:18 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2930
Откуда: г. Ярославль
А как его?.. С какого боку?.. Куда нажимать, на что смотреть?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: клон ББ для gpcp-jvm
СообщениеДобавлено: Среда, 01 Июнь, 2011 22:54 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2505
Откуда: Россия, Ярославль
установить gpcp для джавы и нажать c.bat, если всё ок - нажать run.bat


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: клон ББ для gpcp-jvm
СообщениеДобавлено: Воскресенье, 05 Июнь, 2011 14:37 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1158
Откуда: Tel-Aviv
Похоже на попытку перенять модель работы с модулями БлэкБокса в GPCP. Только абстракция получилась местами не совсем точная. Модулю StdLoader следовало бы использовать преимущественно средства модуля Kernel, без обращения к целевым средствам, как java_lang.

В Ubuntu 10.04 при запуске выдаёт такой ответ:
Код:
$ ./cprun Init
started
load class CP.StdLoader.StdLoader_Instance
installed
load class CP.HostFiles.HostFilesException in thread "main" java.lang.ClassNotFoundException: CP.HostFiles.HostFiles
   at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
   at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
   at CP.StdLoader.StdLoader_JavaLoader.loadClass(StdLoader.cp:24)
   at CP.StdLoader.StdLoader_Instance.LoadMod(StdLoader.cp:31)
   at CP.Kernel.Kernel.LoadMod(Kernel.cp:18)
   at CP.Init.Init.main(Init.cp:8)


Код:
Listing:

   1 MODULE Init;
**** ^ Compiler raised an internal exception
**** Exception: System.NullReferenceException: Object reference not set to an instance of an object
  at GPBinFiles.GPBinFiles.findOnPath (System.Char[] pathName, System.Char[] fileName) [0x00000]
  at NewSymFileRW.SymFileReader.Parse (IdDesc.BlkId scope) [0x00000]
  at NewSymFileRW.ImpResScope.ReadThisImport (IdDesc.BlkId imp) [0x00000]
  at NewSymFileRW.NewSymFileRW.WalkImports (Symbols.ScpSeq& imps, IdDesc.BlkId modI) [0x00000]
  at CPascalP.CPascalP.ImportList (IdDesc.BlkId modScope) [0x00000]
  at CPascalP.CPascalP.CPmodule () [0x00000]
  at CPascalP.CPascalP.Module () [0x00000]
  at CPascalP.CPascalP.Parse () [0x00000]
  at CPascal.CPascal.Compile (System.Char[] nam, System.Int32& retVal) [0x00000]
   2
   3         IMPORT CPmain, Kernel, StdLoader, StdApp;
   4
   5 BEGIN
   6         Kernel.Init;
   7         StdLoader.Init;
   8         Kernel.LoadMod('HostFiles');
   9         Kernel.LoadMod('HostApp');
  10         StdApp.Run;
  11 END Init.

There were:  1 error, and No warnings


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: клон ББ для gpcp-jvm
СообщениеДобавлено: Воскресенье, 05 Июнь, 2011 17:20 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2505
Откуда: Россия, Ярославль
а что такое средства модуля Kernel как не обращение к целевым x86 инструкциям? К тому же, StdLoader юзает SYSTEM для загрузки модулей. Цель не повторить ББ в точности, а сделать достаточно похожий интерфейс среды выполнения для сторонних компонент, которым нет разницы, как реализован механизм работы загрузчика. Абстракция в принципе, такая же, как и в ББ.

А вы, откомпилируйте Host часть руками. я тут обнаружил, что CPmake её не видит. Видимо, придётся хост-часть оформить отдельным списком компиляции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: клон ББ для gpcp-jvm
СообщениеДобавлено: Понедельник, 01 Август, 2011 18:37 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2505
Откуда: Россия, Ярославль
а вот например, после долгой задержки, реализация модуля HostFiles, который получился хоть и попроще (без внутренних буферов), зато реализует абстракцию модуля Files вполне точно (ну, вроде того :)).
по крайней мере тестовый пример обхода дерева каталогов, который я написал в ББ, откомпилировался в gpcp и показал те же результаты в консоли джавы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: клон ББ для gpcp-jvm
СообщениеДобавлено: Четверг, 11 Август, 2011 12:52 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2505
Откуда: Россия, Ярославль
столкнулся с непроходимой трудностью. при компиляции данного кода:
Код:
PROCEDURE (h: Handler) Do* (op: INTEGER; f, g: Views.Frame; VAR msg: Views.CtrlMessage; VAR mark, front, req: BOOLEAN);
<...>   WITH msg: CursorMessage DO
            msg.x := msg.x + f.gx - g.gx;
            msg.y := msg.y + f.gy - g.gy
         ELSE
         END
<...>
   END Do;

компилятор выдаёт:
Код:
 402                                 msg.x := msg.x + f.gx - g.gx;
**** This variable is read-only------^
 403                                 msg.y := msg.y + f.gy - g.gy
**** This variable is read-only------^


казалось бы, VAR параметр. и если написать тестовый модуль, то компилятор пропускает такую конструкцию:

Код:
   PROCEDURE DoMy*(VAR m: MyMsg);
   BEGIN
      m.x:=0;
   END DoMy;

однако стоит ввести абстрактный/расширяемый тип записи и оформить процедуру вот так:
Код:
   PROCEDURE Do*(VAR m: Msg);
   BEGIN   
      WITH m: MyMsg DO
         m.x:=0;
      ELSE END;
   END Do;

получим то же самое предупреждение от компилятора:
Код:
  14                         m.x:=0;
**** ------------------------^ This variable is read-only


собственно, такое поведение описано в ReleaseNotes
Цитата:
The semantics of the WITH statement have been slightly modified so as to strengthen
the guarantees on the properties of the selected variable. In the code —
WITH x : TypeTi DO
... (* guarded region *)
| x : TypeTj DO
... (* guarded region *)
END;
the variable x is asserted to have the specified type throughout the so-called guarded
region. The base language guarantees that the type of the selected variable cannot be
“widened” in the guarded region, but might possibly be narrowed. In gpcp the selected
variable is treated as a constant, and neither the type nor the value can be modified
either directly or indirectly. Any attempt to do so attracts a compile-time error message.


это сводит все возможности реализации хоть какого-то подобия ББ к нулю, потому что, если посмотреть код хэндлеров сообщений реализаций Views.View то мы увидим, что в половине из них присваиваются значения внутри секций WITH а значит код становится непотрируемым. проще говоря, если у меня не получится просто взять и перетащить свой прикладной модуль без правок в будущий возможный клон GPCP то этот клон не имеет смысла.
такие вот дела.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: клон ББ для gpcp-jvm
СообщениеДобавлено: Четверг, 11 Август, 2011 12:56 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2505
Откуда: Россия, Ярославль
вариант сломать компилятор наверное не стоит рассматривать. хотя...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: клон ББ для gpcp-jvm
СообщениеДобавлено: Четверг, 11 Август, 2011 13:26 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2505
Откуда: Россия, Ярославль
есть ещё дотнет компилятор, конечно же, но джава вроде и более кроссплатформенная, нежели дотнет.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2018, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB