The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."
Отправлено Нимано, 22-Дек-15 19:02 
> 1. http://lxr.free-electrons.com/ident?i=OPTIMIZER_HIDE_VAR
> Это к вопросу у gcc-only.

И что, это уже не костыль?

> В отличие от вас, я умею в телепатию. Моя телепатия говорит мне,
> что вы не знаете, что такое суперскалярный процессор с внеочередным исполнением.

Ну-ну. О великий просветитель, зачем вы вообще приплели сюда суперскалярность?

> Ещё моя телепатия говорит мне, что вы гуманитарий:

Хоспади, д'Артаньян, Вы?

> вступаете в противоречие с самим собой, так как ранее вставали на
> сторону Бернштейна в его требовании обеспечить постоянное время выполнения команд сравнения

Аноним не читатель?
> consider adding AES support to their instruction
> sets. For example, a CPU could support fast constant-time

для анонимов: специальные комманды под это дело.
И ведь таки потом AES-NI запилили, не?

> том смысле, что является лишь указанием компилятору,

Ну, если побочный эффект – указание, то да.

> запрет компилятору переупорядочивать в сгенерированном коде команды,
> зависимость по данным между которыми компилятору неочевидна.

Н-да, а сколько пафоса то было.

В первую очередь, это запрет на оптимизацию.
Т.к. для конечный пользователь  вызывает crypto_memneq

static inline int crypto_memneq(const void *a, const void *b, size_t size)
{
         return __crypto_memneq(a, b, size) != 0UL ? 1 : 0;
}

> return __crypto_memneq(a, b, size) != 0UL ? 1 : 0;

т.е. получает 0 или 1.

Я не знаю, как конкретно называется используемая техника в гцц, но тa же классическая "abstract interpretation" при первом же проходе засветит только на раз, что:
( как только neq != 0 => нефиг далее маятся дурью, можно делать ret, т.к. ответ более  "не меняется").
А так – там эдакая костыльная вставка на асме,  означающая (на сей момент) для компилятора: "неведомая магия с neq в качестве in/out", оптимизировать низзя.

Разъясняю на пальцах:

> __asm__ ("" : "=r" (var) : "" (var))

Темплейт-то пустой. Просто здесь объявляется, что "neq" идет в in/out, а сам темплейт гцц (пока) не парсится.
А теперь, вопрос на засыпку: что будет, когда гцц/шланг научатся парсить темплейт  – и соответсвенно "узнают" о том, что neq там не применяется?
И чем это лучше UD?

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру