> 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?