OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 20 Октябрь, 2017 06:26

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




Начать новую тему Ответить на тему  [ Сообщений: 166 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9  След.
Автор Сообщение
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Суббота, 04 Февраль, 2017 02:34 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 653
Откуда: СССР
Kemet писал(а):
Я пробовал (для другого компилятора )


для A2? А где можно посмотреть попытку?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Суббота, 04 Февраль, 2017 17:12 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 398
Kubanych писал(а):
Kemet писал(а):
Я пробовал (для другого компилятора )


для A2? А где можно посмотреть попытку?
Нет, просто эксперименты на С++. Простой, паскалеподобный яп, не завершено. Смысла поднимать проект не вижу. В LLVM нет стабильности, а гнаться от версии к версии за ними нет ни возможности ни желания. Оставаться на одной весрии тоже нельзя. Так что лучший вариант именно в Си. Или в С++.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Суббота, 04 Февраль, 2017 18:29 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 474
Откуда: Киев
Kemet писал(а):
Так что лучший вариант именно в Си. Или в С++.

Си. Абстракции С++, на первый взгляд, лучше подходят под Oberon, но являются довольно медленными.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Суббота, 04 Февраль, 2017 18:31 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 474
Откуда: Киев
Kemet писал(а):
В LLVM нет стабильности, а гнаться от версии к версии за ними нет ни возможности ни желания.

Изменяется API библиотек или код виртуальной машины?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Воскресенье, 05 Февраль, 2017 15:00 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 653
Откуда: СССР
Comdiv писал(а):
я API библиотек или код виртуальной машины?


код виртуальной машины не меняется.
есть два варианта API: С и C++.
Вариант C не меняется,
вариант C++ меняется.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Воскресенье, 05 Февраль, 2017 15:56 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8821
Откуда: Россия, Орёл
Comdiv писал(а):
Си. Абстракции С++, на первый взгляд, лучше подходят под Oberon, но являются довольно медленными.


А что там может оказаться медленным для Оберона?
ЧТо там вообще медленное, кроме обычного оверхеда косвенности ООП (виртуальные вызовы и т.п.)? (который будет таким же и при имитации ООП на С).

В трансляции в С++ есть один плюс:
если ваш модуль X и тип превращаются в классы, то их можно использовать в приличном виде в С++-софте.
И наоборот - вы можете биндить в КП определённым образом подготовленные С++-абстракции.
Что даёт схему "КП как DSL над С++" в обе стороны (и использую нижний С++ из КП, и делаю какие-то сложные, алгоритмоёмкие абстракции на КП, затем используя их удобно из С++).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Воскресенье, 05 Февраль, 2017 18:43 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 474
Откуда: Киев
Илья Ермаков писал(а):
А что там может оказаться медленным для Оберона?
ЧТо там вообще медленное, кроме обычного оверхеда косвенности ООП (виртуальные вызовы и т.п.)? (который будет таким же и при имитации ООП на С)

К примеру, в С++ есть обращение к массиву с проверкой границ - array.at(i). При желании, можно переопределить стандартное обращение через [] с теми же проверками, и тогда код, переведённый с Оберона будет выглядеть идентично оригиналу. Но тестовый код сортировки массива с заранее известными границами показал почти 3-х кратное отставание такого С++ кода от кода на Oberon, переведённого на Си, в котором обращение к массиву выглядит как arr[ind(arr_len, i)], где ind это
Код:
static inline int ind(int len, int i) __attribute__((always_inline));
static inline int ind(int len, int i) {
   assert((unsigned)ind < (unsigned)len);
   return i;
}

Достаточно весомая разница, не 10 %.

Идём дальше. Охрана типа через dynamic_cast в С++ с его множественным наследованием существенно медленней реализуемой на Си охраны для Oberon, в котором тип можно расширить от единственного базового. Тестовая сортировка объектов динамического типа на С++ оказалась в 4-е раза медленней идентичной сортировки на Обероне.

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

Не проверял скорость работы арифметических операций, воплощённых с помощью С++ абстракций, но подозреваю, что и в этом случае С окажется быстрей.

Дополнительным преимуществом Си является и то, что при правильном подходе код на нём может быть интерпретирован и как C++.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Воскресенье, 05 Февраль, 2017 20:10 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8821
Откуда: Россия, Орёл
Хм, ну такие операции можно и странслировать по-сишному.

А общую структуру программы транслировать в С++-сное (модуль, тип => класс).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Вторник, 21 Март, 2017 18:56 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 1918
Откуда: Красноярск
Чтобы освежить ветку, так сказать... выкладываю фотку нашего почти готового шрицевого насоса. Прошивка подготовлена на компиляторе O7. Используются внешние прерывания для работы с энкодером (это такая крутилка тут с черно-белой ручкой), встроенный в МК ЦАП для управления напряжением на шаговом двигателе.
Как все будет доделано, выложу видео как этот аппарат работает в деле.

Вложение:
photo_2017-03-21_17-22-03.jpg
photo_2017-03-21_17-22-03.jpg [ 118.59 КБ | Просмотров: 841 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Среда, 22 Март, 2017 14:20 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 161
ЦАП для управления напряжением на шаговом двигателе?
Всю жизнь считал, что нужен (минимум) трёхфазный сигнал для "шагания вала"…

Для энкодера (валкодера) в STM32 (его используете?) есть "Encoder interface mode" у таймеров.

Но вообще, гениально! Не знаю как насос, а дозатор с запредельной точностью - 5 баллов…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Среда, 22 Март, 2017 16:38 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 641
Откуда: Псков
Artyemov писал(а):
дозатор с запредельной точностью
, на конце иглы :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Среда, 22 Март, 2017 16:45 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 161
А у них, у биофизиков, медики ближайшие родственники… ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Понедельник, 10 Апрель, 2017 16:55 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 161
Появилось чуть свободного времени, продолжил разбираться с "_". Наблюдается какая-то неоднозначность в распознавании "_". Комментарии в Log - это копи-паста из окна редактора. O7S.Identifier, по совету Александра, пока не трогал. Результат на картинке:


Вложения:
O7_RESULTS.png
O7_RESULTS.png [ 15.03 КБ | Просмотров: 698 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Понедельник, 10 Апрель, 2017 21:43 
Аватара пользователя

Зарегистрирован: Суббота, 26 Ноябрь, 2005 02:12
Сообщения: 427
Откуда: Егорьевск
Для того, чтобы разрешить использование "_" в идентификаторах, нужно заменить
Код:
UNTIL (ch < "0") OR (ch > "9") & (ch < "A") OR (ch > "Z") & (ch < "a") OR (ch > "z");
на
Код:
UNTIL (ch < "0") OR (ch > "9") & (ch < "A") OR (ch > "Z") & (ch < "a") & (ch # "_") OR (ch > "z");
в O7S.Identifier и
Код:
ELSE (* _ ` *) sym := null
на
Код:
ELSIF ch = "_" THEN Identifier(sym)
ELSE (* \ ` *) sym := null
в O7S.Get


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Вторник, 11 Апрель, 2017 09:24 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1043
Откуда: СССР v2.0 rc 1
Всё это хорошо, Александр. Я тут попытался модифицировать твой компилятор. А тут бац!!!
И репа обновилась!!)) Так что, лучше это на гитхабе исправить.
Без нижнего подчёркивания, имхо -- неудобно.
Да и ради мимикрии под ББ я совсем не против поддержки юникода. Раз пошла такая пьянка.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Вторник, 11 Апрель, 2017 10:56 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 161
Спасибо.
Я чуть слукавил (: В O7S.Identifier я добавлял выход из цикла при (ch # "_"), а вот до остального не дотянулся.
Ща подкручу у себя.

PS: Ура!!! Как к бабушке сводили…


Последний раз редактировалось Artyemov Вторник, 11 Апрель, 2017 11:19, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Вторник, 11 Апрель, 2017 11:06 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 161
prospero78 писал(а):
Без нижнего подчёркивания, имхо -- неудобно.
Да и ради мимикрии под ББ я совсем не против поддержки юникода. Раз пошла такая пьянка.

С первым аргументом солидарен. "Потроха" периферийные мудрёно обзываются, внятный "разделитель" в идентификаторах полезен.
По второму аргументу: юникод для исходника - нет мнения, а вот внутри прошивки текстовые стоки в юникоде - оверхед, ныне ресурсы контроллеров хоть и немаленькие, но и не настолько большие. CP1251, мне кажется, достаточно (как в своё время и 640К ОЗУ-хи).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Вторник, 11 Апрель, 2017 14:06 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1043
Откуда: СССР v2.0 rc 1
Artyemov писал(а):
По второму аргументу: юникод для исходника - нет мнения, а вот внутри прошивки текстовые стоки в юникоде - оверхед, ныне ресурсы контроллеров хоть и немаленькие, но и не настолько большие. CP1251, мне кажется, достаточно (как в своё время и 640К ОЗУ-хи).

Да боже упаси юникод в МК пихать!! Конечно, cp1251-string only. Я имел в виду идентификаторы (переменные, процедуры, типы, константы и т. д.)
А чтобы русские строки пихать (а тут ещё подумать можно) -- прозрачный конвертер в CP1251.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Среда, 12 Апрель, 2017 12:22 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 161
Есть ли где шпаргалка по ключам\параметрам от ARMv7MP.Compile, ARMv7MTool.DecObj и т.д.?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор Oberon → ARMv6-M, ARMv7E-M
СообщениеДобавлено: Четверг, 13 Апрель, 2017 09:48 
Аватара пользователя

Зарегистрирован: Суббота, 26 Ноябрь, 2005 02:12
Сообщения: 427
Откуда: Егорьевск
P.Compile:
@: компилировать текущий документ
/s: заменять символьные файлы

Tool.DecObj: информаия об объектном файле
Tool.DecSym: информация о символьном файле
Tool.DecBin: дизассемблер bin-файлов
Tool.DecHex: дизассемблер hex-файлов


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 166 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9  След.

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


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

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


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

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