Здравствуйте, Pzz, Вы писали:
C>>Можно организовать пробы, которые утекают по одному биту содержимого. А одного бита со сдвигом уже достаточно, чтобы получить всё остальное. В результате, память читается со скоростью 500 килобайт в секунду. Pzz>Спасибо. Pzz>Охренеть можно. А как из сделать то же самое из JS?
Не очень понял сам, если честно.
C>>Этот код, естественно, падает на SIGSEGV. Но проблема в том, что CPU успевает таки спекулятивно исполнить одну из проб. И затем с помощью тестирования кэша можно обнаружить какая проба сработала. Pzz>А кэш как тестируют? По времянке?
Да, самое простое посчитать число тактов. Но этим оно не ограничивается. Причём даже кэш не нужен, один из способов — использовать инструкции с переменным числом тактов (деление, например) и смотреть сколько тактов оно выполняется в зависимости от данных.