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 | ||
Выкладываю проектный файл.
|
Страница 5 из 6 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |