OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 21 Март, 2019 08:27

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




Начать новую тему Ответить на тему  [ Сообщений: 101 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Понедельник, 16 Январь, 2012 19:47 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Ещё одно дополнение по результатам небольших исследований. Если в первом случае (когда всё ok) заменить локальную переменную ch на такую же, но глобальную, то так же возникает исключение #5: whole overflow. То есть, различия в оптимизации выражений возможно не связаны с тем, как получено значение char, а связаны с тем, где это значение размещено: на стеке, в регистрах или в статической памяти.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Вторник, 17 Январь, 2012 00:34 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2292
Откуда: Россия, Санкт-Петербург
igor писал(а):
Из отчёта, предоставленного Александром, следует, что не только первая строчка вычисляется на этапе компиляции, но и вторая тоже.
Нет, на этапе компиляции вычисляется только первое присваивание. Если включить PROCINLINE, то будет вычисляться и второе присваивание тоже, и тогда вы увидите предупреждение о том, что в данном месте будет исключение "whole overflow".

В этом, действительно, есть различие между compile time и run time. Компилятор вычисляет константные выражения не так же, как код, который он генерирует. Компилятор всегда работает с LONGINT, а генерируемый код - в соответствии с описанием языка.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Вторник, 17 Январь, 2012 06:08 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Александр Ильин писал(а):
igor писал(а):
Из отчёта, предоставленного Александром, следует, что не только первая строчка вычисляется на этапе компиляции, но и вторая тоже.
Нет, на этапе компиляции вычисляется только первое присваивание.
Да, действительно. Чтобы уж окончательно распутаться, разделил переменные:
Код:
PROCEDURE Do;
VAR x, y: LONGINT; ch: CHAR;
BEGIN ch := CHR(65);
   x := 505 * ORD(ch);  (* first case *)
   Out.Int(x, 0);
   y := 505 * ORD(GetChar());  (* second case *)
   Out.Int(y, 0);
END Do;

Отчёт:
Код:
* redundant code eliminated
BEGIN $ch := CHR(65);
* redundant code eliminated
        $x := 505 * ORD(ch);  (* first case *)
* variable "ch" has compile time defined value here
        x := 505 * ORD($ch);  (* first case *)
* variable "x" has compile time defined value here
        Out.Int($x, 0);
no errors, warnings  4, lines   21, time  0.06, new symfile


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Вторник, 17 Январь, 2012 06:14 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Александр Ильин писал(а):
В этом, действительно, есть различие между compile time и run time. Компилятор вычисляет константные выражения не так же, как код, который он генерирует. Компилятор всегда работает с LONGINT, а генерируемый код - в соответствии с описанием языка.
Евгений и Александр, спасибо! :) Вопрос закрыт.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Четверг, 09 Февраль, 2012 18:49 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2292
Откуда: Россия, Санкт-Петербург
Оказывается, 6 февраля вышла бета 2, и некоторые проблемы, сообщённые по почте и через форум, были устранены.
Источник: http://www.excelsior-usa.com/forum/topi ... #entry4526
Надо проверять.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Понедельник, 13 Февраль, 2012 02:01 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2292
Откуда: Россия, Санкт-Петербург
Посмотрел вторую бету. Новых ошибок (из моей коллекции) не исправлено. Добавлены ранее забытые проекты в Samples/vterm. Удалён файл с описанием "учебной лицензии".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Понедельник, 13 Февраль, 2012 05:57 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Александр Ильин писал(а):
Посмотрел вторую бету. Новых ошибок (из моей коллекции) не исправлено.
Спасибо за сообщение. Качать-переходить тогда не буду. Не вижу смысла суетиться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Суббота, 25 Февраль, 2012 15:35 

Зарегистрирован: Четверг, 23 Апрель, 2009 18:01
Сообщения: 219
Кто-нибудь может просветить?
Есть список библиотек и заголовков к ним, но полностью отсутствуют исходники. Пойди догадайся, что IO.RdKey реализована через межпоточную блокировку и крайне тормозит.

import32.lib
libts.lib
libtsmt.lib
libxds.lib
libxdsmt.lib
vterm.lib
xds26i.lib
xds26mi.lib
xstart.lib
xstartc.lib
xstartd.lib
xstartx.lib
xts26i.lib
xts26mi.lib


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Суббота, 25 Февраль, 2012 15:57 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2292
Откуда: Россия, Санкт-Петербург
Александр Шостак писал(а):
Кто-нибудь может просветить?
А в чём просветить-то? Где исходники добыть, или что?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Суббота, 25 Февраль, 2012 17:06 

Зарегистрирован: Четверг, 23 Апрель, 2009 18:01
Сообщения: 219
Ну да. Где глянуть реализацию RTL и стандартных библиотек. Или предполагается работа с чёрным ящиком?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Суббота, 25 Февраль, 2012 18:13 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2292
Откуда: Россия, Санкт-Петербург
Александр Шостак писал(а):
Ну да. Где глянуть реализацию RTL и стандартных библиотек.
Нигде, это "ноу-хау". Читайте документацию. Скажем, либы с буквой "m" в суффиксе - это от слова "multithread".
Если интересны подробности, читайте xc.tem.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Суббота, 25 Февраль, 2012 19:45 

Зарегистрирован: Четверг, 23 Апрель, 2009 18:01
Сообщения: 219
Ага, спасибо. Жаль, конечно, что такое "ноу хау". В отладчике реализацию не удобно выискивать. Проверял на Graph-е и IO.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Среда, 05 Декабрь, 2012 21:44 

Зарегистрирован: Понедельник, 07 Март, 2011 14:26
Сообщения: 4
Народ подскажите: является, ли, сборщик мусора в трансляторе XDS-C для Windows совместимым с многопоточным программированием?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Среда, 05 Декабрь, 2012 22:51 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2292
Откуда: Россия, Санкт-Петербург
-=Сергей Шпагин=- писал(а):
Народ подскажите: является, ли, сборщик мусора в трансляторе XDS-C для Windows совместимым с многопоточным программированием?
Да, см. раздел "Creating multithread programs" в файле xc.hlp.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Среда, 05 Декабрь, 2012 23:28 

Зарегистрирован: Понедельник, 07 Март, 2011 14:26
Сообщения: 4
Александр Ильин писал(а):
Да, см. раздел "Creating multithread programs" в файле xc.hlp.

Так это справка для компилятора Native XDS, а справка к транслятору XDS-C хранится в файле XM.HLP, и там про совместимость с многопоточностью сборщика мусора чётко ничего не говорится, вот я и спрашиваю... На официальном форуме на этот вопрос пока не ответили...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Четверг, 06 Декабрь, 2012 07:36 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2292
Откуда: Россия, Санкт-Петербург
-=Сергей Шпагин=- писал(а):
Так это справка для компилятора Native XDS, а справка к транслятору XDS-C хранится в файле XM.HLP, и там про совместимость с многопоточностью сборщика мусора чётко ничего не говорится, вот я и спрашиваю...
Хех. Прошу прощения, не внимательно прочитал вопрос.

Не знаю, как работает транслятор XDS-C, но если результирующая программа опирается на те же либы, что и скомпилированная Native XDS, то достаточно убедиться, что она использует libxdsmt.ilb (для статической линковки) либо xds25mi.lib (для динамической). Буковка "m" в названии означает "multithreaded". Собственно, это и есть подключение сборщика мусора вместе с многопоточной версией оператора NEW и т.п.

При динамической линковке, соответственно, потребуется xds25m.dll, а не xds25.dll.

При компиляции Native XDS достаточно включить в проектный файл опцию "-multithread:+". Подозреваю, что в XDS-C нужно сделать то же самое, и всё заработает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Четверг, 06 Декабрь, 2012 19:53 

Зарегистрирован: Понедельник, 07 Март, 2011 14:26
Сообщения: 4
Спасибо за ответ.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Четверг, 10 Январь, 2013 13:26 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 316
Откуда: Москва
Тут еще в одном месте случается invalid location...
Код:
<*+ MAIN *>
MODULE test;
IMPORT Out;

PROCEDURE ["C"] / CreateFileMappingA* (hFile: LONGINT; lpAttributes: LONGINT;
flProtect, dwMaximumSizeHigh, dwMaximumSizeLow: LONGINT;
lpName-: ARRAY OF CHAR) : LONGINT;

PROCEDURE Tst;
   VAR send_id: LONGINT;
BEGIN
   send_id := CreateFileMappingA(-1, 0, 4, 0, 32600, "no-such-file.log");
   Out.String("After call "); Out.Int(send_id, 0); Out.Ln;
END Tst;

PROCEDURE Try;
BEGIN
   Out.String("Before Tst"); Out.Ln;
   Tst;
   Out.String("After Tst"); Out.Ln;
END Try;

BEGIN
     Try;
END test.

Собираем, запускаем
Код:
c:\XdsPrj\samples>xc =m test.ob2 +changesym +o2extensions
...
c:\XdsPrj\samples>test.exe
Before Tst
After call 64

#RTS: unhandled exception #3: invalid location

CreateFileMappingA выполняется, но на выходе из вызывающей ее функции трап. То же с OpenFile.

Что-нибудь можно сделать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Четверг, 10 Январь, 2013 13:59 

Зарегистрирован: Вторник, 22 Май, 2007 15:38
Сообщения: 138
Откуда: Питер
Ваш баг у меня воспроизводится. А если я использую проектный файл со своими настройками компилятора, то Ваша программа работает без ошибки. Попробуйте поковыряться в настройках компилятора.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XDS 2.6 beta release
СообщениеДобавлено: Четверг, 10 Январь, 2013 22:56 

Зарегистрирован: Вторник, 22 Май, 2007 15:38
Сообщения: 138
Откуда: Питер
Выкладываю проектный файл.


Вложения:
Example.rar [1.62 КБ]
Скачиваний: 142
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 101 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

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


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

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


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

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