Автор Тема: [BlackBox] Compiler trap.  (Прочитано 35789 раз)

DddIzer

  • Гость
Re: [BlackBox] Compiler trap.
« Ответ #45 : Май 19, 2013, 10:40:51 pm »

По моему не выйдет - там же еще выравнивание небось будет.
а х.з. но в любом случае это будет эксплоитом (язык не определяет  структуру данных на низком уровне)... что не гуд...

Berserker

  • Sr. Member
  • ****
  • Сообщений: 254
    • Просмотр профиля
Re: [BlackBox] Compiler trap.
« Ответ #46 : Май 20, 2013, 01:17:53 pm »
В С++ та же проблема без привязки к конкретному компилятору, не так ли? __declspec(align(1))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: [BlackBox] Compiler trap.
« Ответ #47 : Май 20, 2013, 01:26:53 pm »
В С++ та же проблема без привязки к конкретному компилятору, не так ли? __declspec(align(1))
На самом деле, не совсем:
http://www.stroustrup.com/C++11FAQ.html#align
http://www.stroustrup.com/C++11FAQ.html#attributes
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: [BlackBox] Compiler trap.
« Ответ #48 : Май 20, 2013, 02:03:58 pm »
Возвращаясь к первоначальному топику - пришел ответ от Oberon microsystems AG:
Цитировать
Dear Alexey,

thank you very much for your error report.

We will analyze the problem and hope to correct it in the course of our maintenance activity.

You are probably already aware of a possible workaround along the following lines:

        PROCEDURE Blur(IN in : Frame; OUT out : Frame);
        VAR
                x,y,c,o: INTEGER;
        BEGIN
                FOR y:=1 TO height-2 DO
                        FOR x:=1 TO width-2 DO
                                FOR c:=red TO blue DO
                                        o:=(ORD(in[Index(x,y-1,c)])
                                                + ORD(in[Index(x,y+1,c)])
                                                + ORD(in[Index(x-1,y,c)])
                                                + ORD(in[Index(x+1,y,c)])) DIV 4;
                                        out[Index(x,y,c)] := SHORT(CHR(o));
                                END;
                        END;
                END;
        END Blur;

Thanks again and with best regards,
Marc Frei
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: [BlackBox] Compiler trap.
« Ответ #49 : Май 20, 2013, 02:39:10 pm »
Интересно как скоро будет фикс.

Berserker

  • Sr. Member
  • ****
  • Сообщений: 254
    • Просмотр профиля
Re: [BlackBox] Compiler trap.
« Ответ #50 : Май 20, 2013, 02:49:22 pm »
valexey_u, десятилетия и тонны софта до версии С++11х, так что это не показатель. То же самое и с новыми типами вроде int32_least_t, они нигде не используются, а нужно, чтобы весь код был с их применением.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: [BlackBox] Compiler trap.
« Ответ #51 : Май 20, 2013, 02:50:21 pm »
Интересно как скоро будет фикс.
Ответил им. Дал быстрый фикс от maliya, и ссылку на эту ветку.
Y = λf.(λx.f (x x)) (λx.f (x x))

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re: [BlackBox] Compiler trap.
« Ответ #52 : Май 20, 2013, 03:35:23 pm »
Ответил им. Дал быстрый фикс от maliya, и ссылку на эту ветку.
Представляю их лица, когда они переведут эту ветку... (Привет kkk и Ди-ди-дАйзеру)

DddIzer

  • Гость
Re: [BlackBox] Compiler trap.
« Ответ #53 : Май 20, 2013, 03:42:15 pm »
Ответил им. Дал быстрый фикс от maliya, и ссылку на эту ветку.
Представляю их лица, когда они переведут эту ветку... (Привет kkk и Ди-ди-дАйзеру)
  :) да ладно... ради общего же дела старались (по крайней мере я, увидев бы эту ветку на их месте...-- сказал себе.. блин , а все таки здорово, что наше поделье через 15 лет , вызывает такие эмоциии - ну не круто ли!!!)

DddIzer

  • Гость
Re: [BlackBox] Compiler trap.
« Ответ #54 : Май 20, 2013, 03:55:27 pm »
... и уж они явно лучше чем "лизоблюдские" реляции из коровника, для человека который более менее  адекватно оценивает свой труд...(но это , разумеется , ИМХО)

DddIzer

  • Гость
Re: [BlackBox] Compiler trap.
« Ответ #55 : Май 20, 2013, 04:02:14 pm »
В С++ та же проблема без привязки к конкретному компилятору, не так ли? __declspec(align(1))
где то так.. ,  но вроде как еще в допотопных версиях Паскаля проблема решалась использованием packed records.. на уровне языка.

Berserker

  • Sr. Member
  • ****
  • Сообщений: 254
    • Просмотр профиля
Re: [BlackBox] Compiler trap.
« Ответ #56 : Май 20, 2013, 04:29:53 pm »
Небольшое отклонение от темы.
FreePascal, VirtualPascal, Delphi — проблемы нет, PACKED справляется с записями и массивами. То же самое с соглашениями о вызове. Все их применяют, но лишь стандарт С++ не знает об их существовании. Если целевая платформа не поддерживает определённое соглашение (разрядность, операцию умножения или любой другой элемент ЯП) достаточно выдать ошибку компиляции. Но STDCALL — он и в Африке STDCALL.

Я сперва использовал __declspec(alegn(1)), потом перешёл на #pragma pack(push, 1) из-за разичий в GCC и Студии.

DddIzer

  • Гость
Re: [BlackBox] Compiler trap.
« Ответ #57 : Май 20, 2013, 04:32:45 pm »
перешёл на #pragma pack(push, 1) из-за разичий в GCC и Студии.
  :) аналогично.. только аligned не  использовал ни разу..

DddIzer

  • Гость
Re: [BlackBox] Compiler trap.
« Ответ #58 : Май 20, 2013, 04:33:33 pm »
Интересно как скоро будет фикс.
а вот это , действительно интересно...

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: [BlackBox] Compiler trap.
« Ответ #59 : Май 20, 2013, 04:35:23 pm »
Небольшое отклонение от темы.
FreePascal, VirtualPascal, Delphi — проблемы нет, PACKED справляется с записями и массивами. То же самое с соглашениями о вызове. Все их применяют, но лишь стандарт С++ не знает об их существовании. Если целевая платформа не поддерживает определённое соглашение (разрядность, операцию умножения или любой другой элемент ЯП) достаточно выдать ошибку компиляции. Но STDCALL — он и в Африке STDCALL.

Я сперва использовал __declspec(alegn(1)), потом перешёл на #pragma pack(push, 1) из-за разичий в GCC и Студии.
FreePascal, VirtualPascal, Delphi - не следуют какому-либо стандарту вообще. Это конкретные реализации со своими заморочками, не следующие какому-либо стандарту. Реализации сравнивать со стандартом на язык как-то странно. Ну, то есть корректно было бы сравнивать FreePascal c g++, Delphi с MSVS, VirtualPascal с Intel C++ Compiler и так далее.

Ну и я же не даром две ссылки привел - стандарт С++ теперь про выравнивание знает. Но прибить гвоздями ABI для универсального языка не представляется возможным.
Y = λf.(λx.f (x x)) (λx.f (x x))