OberonCore
https://forum.oberoncore.ru/

XDS 2.6 beta release
https://forum.oberoncore.ru/viewtopic.php?f=30&t=3739
Страница 5 из 6

Автор:  igor [ Понедельник, 16 Январь, 2012 19:47 ]
Заголовок сообщения:  Re: XDS 2.6 beta release

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

Автор:  Александр Ильин [ Вторник, 17 Январь, 2012 00:34 ]
Заголовок сообщения:  Re: XDS 2.6 beta release

igor писал(а):
Из отчёта, предоставленного Александром, следует, что не только первая строчка вычисляется на этапе компиляции, но и вторая тоже.
Нет, на этапе компиляции вычисляется только первое присваивание. Если включить PROCINLINE, то будет вычисляться и второе присваивание тоже, и тогда вы увидите предупреждение о том, что в данном месте будет исключение "whole overflow".

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

Автор:  igor [ Вторник, 17 Январь, 2012 06:08 ]
Заголовок сообщения:  Re: XDS 2.6 beta release

Александр Ильин писал(а):
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

Автор:  igor [ Вторник, 17 Январь, 2012 06:14 ]
Заголовок сообщения:  Re: XDS 2.6 beta release

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

Автор:  Александр Ильин [ Четверг, 09 Февраль, 2012 18:49 ]
Заголовок сообщения:  Re: XDS 2.6 beta release

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

Автор:  Александр Ильин [ Понедельник, 13 Февраль, 2012 02:01 ]
Заголовок сообщения:  Re: XDS 2.6 beta release

Посмотрел вторую бету. Новых ошибок (из моей коллекции) не исправлено. Добавлены ранее забытые проекты в Samples/vterm. Удалён файл с описанием "учебной лицензии".

Автор:  igor [ Понедельник, 13 Февраль, 2012 05:57 ]
Заголовок сообщения:  Re: XDS 2.6 beta release

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

Автор:  Александр Шостак [ Суббота, 25 Февраль, 2012 15:35 ]
Заголовок сообщения:  Re: XDS 2.6 beta release

Кто-нибудь может просветить?
Есть список библиотек и заголовков к ним, но полностью отсутствуют исходники. Пойди догадайся, что 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

Автор:  Александр Ильин [ Суббота, 25 Февраль, 2012 15:57 ]
Заголовок сообщения:  Re: XDS 2.6 beta release

Александр Шостак писал(а):
Кто-нибудь может просветить?
А в чём просветить-то? Где исходники добыть, или что?

Автор:  Александр Шостак [ Суббота, 25 Февраль, 2012 17:06 ]
Заголовок сообщения:  Re: XDS 2.6 beta release

Ну да. Где глянуть реализацию RTL и стандартных библиотек. Или предполагается работа с чёрным ящиком?

Автор:  Александр Ильин [ Суббота, 25 Февраль, 2012 18:13 ]
Заголовок сообщения:  Re: XDS 2.6 beta release

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

Автор:  Александр Шостак [ Суббота, 25 Февраль, 2012 19:45 ]
Заголовок сообщения:  Re: XDS 2.6 beta release

Ага, спасибо. Жаль, конечно, что такое "ноу хау". В отладчике реализацию не удобно выискивать. Проверял на Graph-е и IO.

Автор:  -=Сергей Шпагин=- [ Среда, 05 Декабрь, 2012 21:44 ]
Заголовок сообщения:  Re: XDS 2.6 beta release

Народ подскажите: является, ли, сборщик мусора в трансляторе XDS-C для Windows совместимым с многопоточным программированием?

Автор:  Александр Ильин [ Среда, 05 Декабрь, 2012 22:51 ]
Заголовок сообщения:  Re: XDS 2.6 beta release

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

Автор:  -=Сергей Шпагин=- [ Среда, 05 Декабрь, 2012 23:28 ]
Заголовок сообщения:  Re: XDS 2.6 beta release

Александр Ильин писал(а):
Да, см. раздел "Creating multithread programs" в файле xc.hlp.

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

Автор:  Александр Ильин [ Четверг, 06 Декабрь, 2012 07:36 ]
Заголовок сообщения:  Re: XDS 2.6 beta release

-=Сергей Шпагин=- писал(а):
Так это справка для компилятора 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 нужно сделать то же самое, и всё заработает.

Автор:  -=Сергей Шпагин=- [ Четверг, 06 Декабрь, 2012 19:53 ]
Заголовок сообщения:  Re: XDS 2.6 beta release

Спасибо за ответ.

Автор:  Дмитрий Дагаев [ Четверг, 10 Январь, 2013 13:26 ]
Заголовок сообщения:  Re: XDS 2.6 beta release

Тут еще в одном месте случается 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.

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

Автор:  GameHunter [ Четверг, 10 Январь, 2013 13:59 ]
Заголовок сообщения:  Re: XDS 2.6 beta release

Ваш баг у меня воспроизводится. А если я использую проектный файл со своими настройками компилятора, то Ваша программа работает без ошибки. Попробуйте поковыряться в настройках компилятора.

Автор:  GameHunter [ Четверг, 10 Январь, 2013 22:56 ]
Заголовок сообщения:  Re: XDS 2.6 beta release

Выкладываю проектный файл.

Вложения:
Example.rar [1.62 КБ]
Скачиваний: 332

Страница 5 из 6 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/