OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 19 Март, 2024 10:29

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




Начать новую тему Ответить на тему  [ Сообщений: 54 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Восток - Транслятор Oberon-07
СообщениеДобавлено: Вторник, 23 Январь, 2018 13:23 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Trurl писал(а):
А разве Vostok там есть?
Как дозреет, так будет.
А вопрос был о том, что для того, чтобы ставить что-то со стороны, оно должно того стоить. Борис на него приблизительно ответил.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Восток - Транслятор Oberon-07
СообщениеДобавлено: Вторник, 23 Январь, 2018 14:07 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Кстати, Comdiv, не думали чат создать как нынче принято в gitter.im?
Ну и все общение с двух форумов туда перенести?
Там площадка более удобная для этих целей с подсветкой синтаксиса в комментах и вообще интеграция с гитхабом.
Там вам любой чел с гитхаба сможет вопрос задать.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Восток - Транслятор Oberon-07
СообщениеДобавлено: Вторник, 23 Январь, 2018 14:22 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Не слышал до сих пор о таком. Гляну.
Хотя, в принципе, форумы меня устраивают.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Восток - Транслятор Oberon-07
СообщениеДобавлено: Вторник, 19 Июнь, 2018 10:15 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Oleg N. Cher писал(а):
P.S. Видел там на форуме, Ваш Восток вообще трудно и собирать, и пользоваться им. Половину не понял из того, что там ему надо. Так что буду рад, если Вы как-то упростите этот процесс.
Как минимум, одна часть людей смогла им воспользоваться, не задавая вопросов, а другая часть смогла после моих ответов. О молчащих мне трудно судить. Для пользователей Windows может быть сложность в том, что у меня нет Windows и я не всё учитываю и мне сложно тестировать работоспособность в этом семействе ОС.

Среди неожиданного для меня было то, что часть вопросов пользователей была вызвана тем, что транслятор работает с командами в стиле Оберон, а не с файлами, как принято в Си.

Так, например, можно собрать сам транслятор из каталога проекта
Код:
$ result/o7c to-bin Translator.Start result/o7c-1 -infr . -m source
Где Translator.Start - это та самая команда.
А так - запустить его прямо из исходников для вывода справки, где можно почитать что к чему:
Код:
$ result/o7c run Translator.Start -infr . -m source -- help

Первоначальная сборка осуществляется скриптами для соответствующих ОС.

Вроде бы, не трудно. Если есть вопросы, готов ответить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Восток - Транслятор Oberon-07
СообщениеДобавлено: Понедельник, 20 Август, 2018 14:44 
Аватара пользователя

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
Запустил vostok на маке под Clang.

Пришлось несколько гаек подкрутить:
https://github.com/dmitrys99/vostok/commits/master
Clang, похоже, очень трепетно относится к именам файлов, поэтому тест MathTest не собирается, ругается на -Wnonportable-include-path

Кроме того, собирал так:
Код:
make test SANITIZE:=-std=c99


Дополнительно изменил функции, связанные с undefined double и undefined float.
Как я понял, memcpy используется для записи в предоставленную ячейку значения, которое соответствует IEEE 754 NaN, но для этого в C99 есть соответствующая функция nan(), что я и использовал.

Попробую теперь собрать под Windows в Visual Studio, благо никаких сверхъестественных особенностей языка и ОС не используется.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Восток - Транслятор Oberon-07
СообщениеДобавлено: Понедельник, 20 Август, 2018 23:54 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Димыч писал(а):
Запустил vostok на маке под Clang.
Код:
+#if ... || defined(__APPLE__)
ЗдОрово, про мак я совсем забыл

Димыч писал(а):
Clang, похоже, очень трепетно относится к именам файлов, поэтому тест MathTest не собирается, ругается на -Wnonportable-include-path
Довольно странно, на моей памяти файловая система на макоси регистрозависимая, и тогда не должно было быть проблемы с
Код:
#include "Math.h"
На WINE тоже была проблема - из-за регистронезависимости было пересечение со стандартным math.h, но добавив явные определения стандартных функций, я решил эту проблему. Изначально она, вообще, решалась тем, что math и Math считались особыми словами и отображались в math_.h и Math_.h. Надо будет ещё подумать над этой проблемой в свете новой информации.

Цитата:
Переименованы файлы для компиляции с помощью CLANG
singularity/implementation/Math.c → singularity/implementation/O7Math.c
singularity/implementation/Math.h → singularity/implementation/O7Math.h

Непонятно за счёт чего такое переименование помогло пройти тесту. Обероновский модуль Math отображается на сишные Math.[hc] и транслятор подключает при трансляции соответствующие файлы. O7Мath.[hc] должны быть проигнорированы. Если это не так, то надо разбираться почему.

Цитата:
Кроме того, собирал так:
Код:
make test SANITIZE:=-std=c99
Похоже, что используется старая версия clang. В новых версиях и >=С99 стоит по умолчанию, и опции *sanitize* доступны. Или же это связано с тем, что clang в sanitize режиме некорректно отрабатывает как неопределённое поведение
Код:
((P*)NULL)->a
где а лежит по 0-му смещению

Это не принципиально, но с точки зрении задумки структуры Makefile, корректней запускать так:
Код:
make test SANITIZE:= OPT:=-std=c99

Также, я теперь больше использую для сборки модуль make.mod, написанный на самом Обероне, так как он работает и в WINE, и, наверно, в Windows, в отличии от Makefile.

Цитата:
Дополнительно изменил функции, связанные с undefined double и undefined float.
Как я понял, memcpy используется для записи в предоставленную ячейку значения, которое соответствует IEEE 754 NaN, но для этого в C99 есть соответствующая функция nan(), что я и использовал.
Не совсем. Это сигнальная неопределённость, то есть, такая, что должна приводить к АВОСТ при попытке работать со значением. Я хотел по максимуму использовать стандартные возможности. Стандарт упоминает о ней, но компиляторы на неё не обращает внимания, работая как с обычной неопределённостью, поэтому приходится делать проверку явно. Я придерживаю эту возможность для более продвинутых компиляторов, которые, возможно, появятся в будущем или, может, даже есть, к примеру, для Эльбруса. Я видел более цивилизованный способ задать битовое содержимое double, но упустил его из виду и руки пока не дошли. Также, я стараюсь использовать возможности более современных стандартов так, чтобы не блокировать возможность сбора под старый.

Цитата:
Попробую теперь собрать под Windows в Visual Studio, благо никаких сверхъестественных особенностей языка и ОС не используется.
Спасибо, у меня самого нет прямой возможности, а её создать мне не хватает желания.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Восток - Транслятор Oberon-07
СообщениеДобавлено: Вторник, 11 Сентябрь, 2018 11:27 
Аватара пользователя

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
Заработала компиляция под Visual Studio 2015.

https://github.com/ComdivByZero/vostok/pull/2

Там, правда, в PR влезли и остальные модификации (nan и MacOS).

Я этот PR не проверял пока на маке, чуть позже проверю, но должно работать.
По C/C++ коду не очень понятно, зачем в условной компиляции C++, это намеренно сделано?
Кроме того, я не до конца понял, к чему такие сложности с o7_bool с его определением.
Раз уж завязались на unsigned char, пусть бы так везде и было. Это, впрочем, не критика,
мое недопонимание архитектуры.

Генерацию не переделывал, собирается пока только bootstrap.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Восток - Транслятор Oberon-07
СообщениеДобавлено: Вторник, 11 Сентябрь, 2018 12:18 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Димыч писал(а):
Заработала компиляция под Visual Studio 2015.

https://github.com/ComdivByZero/vostok/pull/2

Там, правда, в PR влезли и остальные модификации (nan и MacOS).
Хорошо. Я приму запрос, потом подкорректирую.

Цитата:
По C/C++ коду не очень понятно, зачем в условной компиляции C++, это намеренно сделано?
Изначально я хотел, чтобы генерировался код, компилируемый и как C, и как C++. Пока это не так из-за чехарды с тэгами структур, но планируется в конечном итоге исправить.

Цитата:
Кроме того, я не до конца понял, к чему такие сложности с o7_bool с его определением.
Раз уж завязались на unsigned char, пусть бы так везде и было.
Желание усидеть на двух стульях. С одной стороны я хочу получить защищённый код, для чего нужен bool в виде unsigned char для хранения вспомогательного значения неинициализированности. С другой стороны хочу иметь возможность максимально приблизить конечный код к идиомам выходного языка. Более того, делать выбор между режимами можно и без необходимости перегенерировать код на C. В целом, у меня было желание сделать не столько компилятор, сколько преобразователь одной формы исходного кода в другую, хотя и с упором на работоспособность, а не красоту выходного кода.

Цитата:
Это, впрочем, не критика, мое недопонимание архитектуры.
Ничего не имею против критики в истинном понимании этого слова.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Восток - Транслятор Oberon-07
СообщениеДобавлено: Вторник, 11 Сентябрь, 2018 12:24 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Код:
-#include <stdbool.h>

Расскажите, пожалуйста, почему эта строчка препятствует сборке через VS.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Восток - Транслятор Oberon-07
СообщениеДобавлено: Вторник, 11 Сентябрь, 2018 13:44 
Аватара пользователя

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
Comdiv писал(а):
Код:
-#include <stdbool.h>

Расскажите, пожалуйста, почему эта строчка препятствует сборке через VS.

Изначально я начал собирать на VS 2012, однако stdbool.h появился в VS2013

https://blogs.msdn.microsoft.com/vcblog/2013/07/19/c99-library-support-in-visual-studio-2013/

В общем сейчас проверил, можно stdbool не убирать, на VS 2015 компилируется и без этого. Но я бы все-равно убрал #include <stdbool.h> внутрь o7.h.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Восток - Транслятор Oberon-07
СообщениеДобавлено: Вторник, 11 Сентябрь, 2018 13:47 
Аватара пользователя

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
Comdiv писал(а):
Димыч писал(а):
По C/C++ коду не очень понятно, зачем в условной компиляции C++, это намеренно сделано?
Изначально я хотел, чтобы генерировался код, компилируемый и как C, и как C++. Пока это не так из-за чехарды с тэгами структур, но планируется в конечном итоге исправить.

Мне кажется, что это как раз избыточно, пусть уже будет C, для C++ код получается не совсем "родной".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Восток - Транслятор Oberon-07
СообщениеДобавлено: Вторник, 11 Сентябрь, 2018 14:40 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Димыч писал(а):
Изначально я начал собирать на VS 2012, однако stdbool.h появился в VS2013

https://blogs.msdn.microsoft.com/vcblog/2013/07/19/c99-library-support-in-visual-studio-2013/

В общем сейчас проверил, можно stdbool не убирать, на VS 2015 компилируется и без этого. Но я бы все-равно убрал #include <stdbool.h> внутрь o7.h.

В Microsoft, конечно, с юмором подходят/подходили к стандартам, но я постараюсь это учесть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Восток - Транслятор Oberon-07
СообщениеДобавлено: Вторник, 11 Сентябрь, 2018 14:45 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Димыч писал(а):
Цитата:
Изначально я хотел, чтобы генерировался код, компилируемый и как C, и как C++. Пока это не так из-за чехарды с тэгами структур, но планируется в конечном итоге исправить.
Мне кажется, что это как раз избыточно, пусть уже будет C, для C++ код получается не совсем "родной".
Тут дело не в том, чтобы сделать код родным для С++, а в том, чтобы упростить возможность использования кода из С++. Это мой обычный подход при создании кода на C. В любом случае эта задача не в приоритете.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Восток - Транслятор Oberon-07
СообщениеДобавлено: Среда, 12 Сентябрь, 2018 12:43 
Аватара пользователя

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
Да, теперь из мастера собирается в VS2015 корректно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Восток - Транслятор Oberon-07
СообщениеДобавлено: Суббота, 15 Сентябрь, 2018 12:11 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Добавил сборщик простых Android-приложений - http://comdivbyzero.blogspot.com/2018/0 ... droid.html


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Восток - Транслятор Oberon-07
СообщениеДобавлено: Суббота, 15 Сентябрь, 2018 13:06 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 717
Откуда: Барнаул
В VS2017 bootstrap собирается, а дальше...
Код:
g:\H\SOURCE\compilers\OBERON\vostok>result\bs-o7c run make.Help -infr . -m source -cc cl.exe
Оптимизирующий компилятор Microsoft (R) C/C++ версии 19.15.26726 для x64
(C) Корпорация Майкрософт (Microsoft Corporation).  Все права защищены.

cl: командная строка warning D9035: использование параметра "o" нежелательно, он будет удален в следующих выпусках
cl: командная строка warning D9026: параметры применяются ко всей командной строке
CFiles.c
Platform.c
Out.c
Log.c
V.c
Utf8.c
OsExec.c
VDataStream.c
StringStore.c
PlatformExec.c
PosixDir.c
WindowsDir.c
Dir.c
make.c
o7.c
Создание кода...
Microsoft (R) Incremental Linker Version 14.15.26726.0
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:CFiles.exe
/out:C:\Users\D899~1\AppData\Local\Temp\o7c-make\make.exe
CFiles.obj
Platform.obj
Out.obj
Log.obj
V.obj
Utf8.obj
OsExec.obj
VDataStream.obj
StringStore.obj
PlatformExec.obj
PosixDir.obj
WindowsDir.obj
Dir.obj
make.obj
o7.obj
WindowsDir.obj : error LNK2019: ссылка на неразрешенный внешний символ findfirst в функции WindowsDir_FindFirst
WindowsDir.obj : error LNK2019: ссылка на неразрешенный внешний символ findnext в функции WindowsDir_FindNext
WindowsDir.obj : error LNK2019: ссылка на неразрешенный внешний символ findclose в функции WindowsDir_Close
C:\Users\D899~1\AppData\Local\Temp\o7c-make\make.exe : fatal error LNK1120: неразрешенных внешних элементов: 3
Error during C compiler call


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Восток - Транслятор Oberon-07
СообщениеДобавлено: Суббота, 15 Сентябрь, 2018 13:13 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Для трансляции через cl.exe нужно сделать обёртку компилятора, поддерживающую его ключи. Но как-то подозрительно далеко зашла трансляция без этой поддержки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Восток - Транслятор Oberon-07
СообщениеДобавлено: Суббота, 15 Сентябрь, 2018 13:21 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Я смотрю в документации Windows есть _findfirst, но нет findfirst. Они сделали чистку? В чём был её смысл?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Восток - Транслятор Oberon-07
СообщениеДобавлено: Суббота, 15 Сентябрь, 2018 13:37 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Добавил _ к именам недостающих функций - в WINE этот вариант тоже работает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Восток - Транслятор Oberon-07
СообщениеДобавлено: Суббота, 15 Сентябрь, 2018 16:09 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 717
Откуда: Барнаул
да, сборка нормально проходит


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 54 ]  На страницу Пред.  1, 2, 3  След.

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


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

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


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

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