OberonCore

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

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




Начать новую тему Ответить на тему  [ Сообщений: 98 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: Оберон-07: вопросы реализации
СообщениеДобавлено: Суббота, 16 Февраль, 2019 16:47 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 297
Откуда: Украина, Днепропетровская обл.
Kemet, видимо, в реальной жизни без зоопарков не обойтись. И что в них плохого? Никогда всё не бывает идеально. Нравится людям пилить компиляторы. Гораздо больше, чем писать библиотеки общего назначения. Что поделаешь.

Я не лабаю очередной недокомпилятор. Я лабаю транслятор семейства Оберон-языков в Си промышленного уровня. Оберон-07 там может быть представлен для полноты картины. Поддержать AO тоже заманчиво, но это не в приоритете.

Baikal писал(а):
Замена сдвига на деление не очень актуальна, так как деление очень медленное, а сдвиг очень быстрый, и как раз наоборот, умножение и деление заменяют на сдвиги где это возможно.
Baikal, хороший компилятор оптимизирует деления и умножения на константы, кратные 2. Я бы вообще не пользовался компилятором, который этого не делает. Ofront+ тоже заменяет такие деления и умножения на сдвиги.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07: вопросы реализации
СообщениеДобавлено: Суббота, 16 Февраль, 2019 18:55 

Зарегистрирован: Пятница, 11 Январь, 2019 19:26
Сообщения: 53
Откуда: Russia
транслятор АО в Си уже есть


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07: вопросы реализации
СообщениеДобавлено: Суббота, 16 Февраль, 2019 19:01 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2591
Откуда: Россия, Ярославль
Kemet писал(а):
Непонимание этого простого факта приводит к появленгию очередных свидетелей Ие.., а, ну да, Вирта.

Кемет не меняется, такое же трепло, как и пять лет назад.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07: вопросы реализации
СообщениеДобавлено: Суббота, 16 Февраль, 2019 20:30 

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

Kemet писал(а):
Студентам нужно лабать очередной шедевр. Поэтому у каждого свой вариант Оберона07 или Активного Оберона/А2. Это не даёт развиваться экосистемам.
Существует большое количество учебных компиляторов Си и профессиональных тоже с несколько десятков, каждый со своими несовместимыми особенностями, но инфраструктура развивается и очень хорошо, потому что полно людей, который могут и хотят её развивать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07: вопросы реализации
СообщениеДобавлено: Суббота, 16 Февраль, 2019 21:39 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 297
Откуда: Украина, Днепропетровская обл.
Comdiv писал(а):
Не существует "Оберонцев-07". Вы спорите с призраками, созданными в Вашей голове, образы которых Вы накладываете на настоящих собеседников.
А как ещё называть людей, которые считают Оберон-07 абсолютно полноценным и самодостаточным языком программирования? И скрупулёзно ведут пространные дискуссии о каждом его аспекте, находя всё больше и больше достоинств по сравнению с Модулой-2, Обероном-2 и КП. Фанатиками? :-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07: вопросы реализации
СообщениеДобавлено: Суббота, 16 Февраль, 2019 21:52 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 863
Откуда: Киев
То, что он полноценный и самодостаточный это простое следствие алгоритмической полноты, достижение чего не является чем-то сложным, а, скорее, наоборот.
Цитата:
И скрупулёзно ведут пространные дискуссии о каждом его аспекте, находя всё больше и больше достоинств по сравнению с Модулой-2, Обероном-2 и КП
Покажите, пожалуйста, такие дискуссии, в которых всё именно так, как Вы описываете.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07: вопросы реализации
СообщениеДобавлено: Суббота, 16 Февраль, 2019 21:56 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1196
Интересно, если убрать 07, что-то изменится?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07: вопросы реализации
СообщениеДобавлено: Суббота, 16 Февраль, 2019 23:09 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 297
Откуда: Украина, Днепропетровская обл.
Comdiv писал(а):
Покажите, пожалуйста, такие дискуссии, в которых всё именно так, как Вы описываете.
Поваритесь маленько на IRC-канале #oberon на freenode, там постоянно происходят такие беседы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07: вопросы реализации
СообщениеДобавлено: Воскресенье, 17 Февраль, 2019 10:26 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8153
Откуда: Троицк, Москва
Потребность трепать языком у т.наз. "сапиенсов" -- эволюционно-фундаментальная.

Возбуждаться, наблюдая её, -- нонсенс.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07: вопросы реализации
СообщениеДобавлено: Четверг, 21 Февраль, 2019 23:58 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 297
Откуда: Украина, Днепропетровская обл.
Покритикуйте, пожалуйста, мою реализацию циклического сдвига вправо. Может можно проще?

Код:
PROCEDURE Ror* (x, n: INTEGER): INTEGER;
BEGIN
   ASSERT((0 <= n) & (n <= 31));
   WHILE n > 0 DO
      IF ODD(x) THEN x := ASH(x, -1); IF x >= 0 THEN INC(x, MIN(INTEGER)) END
      ELSE x := ASH(x, -1); IF x < 0 THEN DEC(x, MIN(INTEGER)) END
      END;
      DEC(n)
   END;
   RETURN x
END Ror;

P.S. SYSTEM.ROT не предлагать, я про него знаю. Вопрос не об этом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07: вопросы реализации
СообщениеДобавлено: Пятница, 22 Февраль, 2019 01:20 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 863
Откуда: Киев
Должно быть воплощение без цикла.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07: вопросы реализации
СообщениеДобавлено: Пятница, 22 Февраль, 2019 06:43 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 714
Откуда: Барнаул
как-то так
Код:
n := n MOD 0b100000;
SYSTEM.VAL( INT32, SYSTEM.VAL( SET32, LSH( x, 32 - n )) + SYSTEM.VAL( SET32, LSH( x, -n )));


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07: вопросы реализации
СообщениеДобавлено: Пятница, 22 Февраль, 2019 08:15 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 297
Откуда: Украина, Днепропетровская обл.
Kemet, про SYSTEM.LSH я тоже наслышан...

Хорошо, усложним проблему. Нужен RorLong для 64-битных значений. SYSTEM.LSH и SYSTEM.ROT не предлагать — они умеют только 32-битные сдвиги (хотя в Ofront'е+ и 64-битные тоже). Только ASH нормально заточен под LONGINT.

Насчёт того, чтобы избавиться от цикла — согласен. В Ofront сдвиг SYSTEM.ROT реализован так:
Код:
#define __ROTL(x, n, t) ((t)((__U_##t)(x)<<(n)|(__U_##t)(x)>>(8*sizeof(t)-(n))))
#define __ROTR(x, n, t) ((t)((__U_##t)(x)>>(n)|(__U_##t)(x)<<(8*sizeof(t)-(n))))
#define __ROT(x, n, t)  ((n)>=0? __ROTL(x, n, t): __ROTR(x, -(n), t))
(__U_##t)(x) это приведение к беззнаковому типу нужной битности.

Но это на Си. А нужно на Компонентном Паскале.

P.S. Про то, что в Обероне-07 нет типа LONGINT, я в курсе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07: вопросы реализации
СообщениеДобавлено: Пятница, 22 Февраль, 2019 09:15 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 714
Откуда: Барнаул
Oleg N. Cher писал(а):
Хорошо, усложним проблему. Нужен RorLong для 64-битных значений. SYSTEM.LSH и SYSTEM.ROT не предлагать — они умеют только 32-битные сдвиги (хотя в Ofront'е+ и 64-битные тоже). Только ASH нормально заточен под LONGINT.
Если так, то нужно правильно сделать эти сдвиги. Или разбить число на 32-битные сегменты и сдвигать их последовательно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07: вопросы реализации
СообщениеДобавлено: Суббота, 23 Февраль, 2019 17:33 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 318
Kemet писал(а):
Oleg N. Cher писал(а):
Хорошо, усложним проблему. Нужен RorLong для 64-битных значений. SYSTEM.LSH и SYSTEM.ROT не предлагать — они умеют только 32-битные сдвиги (хотя в Ofront'е+ и 64-битные тоже). Только ASH нормально заточен под LONGINT.
Если так, то нужно правильно сделать эти сдвиги. Или разбить число на 32-битные сегменты и сдвигать их последовательно.

А перенос где сохранять? Слово состояния процессора же вне доступных "сущностей" ;-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07: вопросы реализации
СообщениеДобавлено: Воскресенье, 24 Февраль, 2019 15:19 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 297
Откуда: Украина, Днепропетровская обл.
Протестировал такую реализацию RorLong (в BlackBox):

Код:
PROCEDURE RorLong* (x: LONGINT; n: INTEGER): LONGINT;
   VAR r: INTEGER; xr: LONGINT;
BEGIN
   ASSERT((0 <= n) & (n <= 63));
   xr := x; r := n;
   IF (xr < 0) & (r > 0) THEN xr := ASH(xr, -1) - MIN(LONGINT); DEC(r) END;
   RETURN ASH(xr, -r) + ASH(x, 64 - n)
END RorLong;

ASH(x, n) выдаёт ошибку исполнения "undefined real result (F8A1, 37E)" при n > 62. Для арифметического сдвига это нормально — получилось арифметическое переполнение, результат врезался в бит знака.

Похоже, использовать ASH для логического сдвига битов — плохая идея.

Будут ещё предложения?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07: вопросы реализации
СообщениеДобавлено: Воскресенье, 24 Февраль, 2019 16:01 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1196
В BlackBox же LONGINT реализован на FPU. Не уверен, что двигать там биты - хорошая идея.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07: вопросы реализации
СообщениеДобавлено: Воскресенье, 24 Февраль, 2019 16:12 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 297
Откуда: Украина, Днепропетровская обл.
Это хорошо, что переполнение ловит. Но вот да, как двигать биты (с переносом)? Не иначе как бить число на части и через SYSTEM.LSH...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07: вопросы реализации
СообщениеДобавлено: Воскресенье, 24 Февраль, 2019 17:07 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9124
Откуда: Россия, Орёл
Oleg N. Cher писал(а):
А как ещё называть людей, которые считают Оберон-07 абсолютно полноценным и самодостаточным языком программирования? И скрупулёзно ведут пространные дискуссии о каждом его аспекте, находя всё больше и больше достоинств по сравнению с Модулой-2, Обероном-2 и КП. Фанатиками? :-)


Если использовать его как "безопасный Си" для микроконтроллеров, да ещё и модульный и с расширяемой системой типов - то он, наверное, реально полноценен.

Но это если не хотеть иметь инструменты прикладного абстрагирования повыше уровнем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оберон-07: вопросы реализации
СообщениеДобавлено: Воскресенье, 24 Февраль, 2019 20:12 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 297
Откуда: Украина, Днепропетровская обл.
Илья, ну мы наверное константные массивы не зря в Ofront+ добавляли? Нет этого функционала в Обероне. А для мк он реально нужен. Или извращаться с UUDecode("FFAABB...")? Это потеря памяти на больших массивах. Тройная. А там, где нет файловой системы, из файла ресурс не скачать.

Мы тут выходим на скользкий путь того, что всё недостающее можно реализовать в SYSTEM.


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

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


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

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


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

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