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?

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Дэниэл Бернштейн выступил с инициативой создания Си-компилят..., opennews, 22-Дек-15, 13:48  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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