u32.h - Man Page
32-разрядные слова
Synopsis
#include 'bee2/defs.h'
#include 'bee2/core/safe.h'
Макросы
#define u32RotHi(w, d)
Циклический сдвиг u32-слова на d позиций в сторону старших разрядов
#define u32RotLo(w, d)
Циклический сдвиг u32-слова на d позиций в сторону младших разрядов
Функции
u32 u32Rev (register u32 w)
Реверс октетов
void u32Rev2 (u32 buf[], size_t count)
Реверс октетов массива слов
size_t u32Weight (register u32 w)
Вес
bool_t u32Parity (register u32 w)
Четность
size_t u32CTZ (register u32 w)
Число младших нулевых битов
size_t u32CLZ (register u32 w)
Число старших нулевых битов
u32 u32Shuffle (register u32 w)
Тасование битов
u32 u32Deshuffle (register u32 w)
Обратное тасование битов
u32 u32NegInv (register u32 w)
Аддитивно-мультипликативное обращение
void u32From (u32 dest[], const void *src, size_t count)
Загрузка из буфера памяти
void u32To (void *dest, size_t count, const u32 src[])
Выгрузка в буфер памяти
Подробное описание
Реализованы операции над 32-разрядными словами и массивами таких слов.
Предусловие
В функции передаются корректные буферы памяти.
Макросы
#define u32RotHi( w, d)
Макроопределение:
((u32)((w) << (d) | (w) >> (32 - (d))))
Предусловие
0 < d < 32.
#define u32RotLo( w, d)
Макроопределение:
((u32)((w) >> (d) | (w) << (32 - (d))))
Предусловие
0 < d < 32.
Функции
size_t FAST u32CLZ (register u32 w)
Определяется длина серии из нулевых старших битов машинного слова w.
Возвращает
Длина серии.
- Прим.
CLZ == Count of Leading Zeros
Регулярность
Имеется ускоренная нерегулярная редакция.
- Аргументы
w слово
Перекрестные ссылки u32CLZ().
Используется в u32CLZ().
size_t FAST u32CTZ (register u32 w)
Определяется длина серии из нулевых младших битов u32-слова w.
Возвращает
Длина серии.
- Прим.
CTZ == Count of Trailing Zeros
Регулярность
Имеется ускоренная нерегулярная редакция.
- Аргументы
w слово
Перекрестные ссылки u32CTZ().
Используется в u32CTZ().
u32 u32Deshuffle (register u32 w)
Четные биты u32-слова w группируются в его младшей половинке, нечетные -- в старшей.
Возвращает
Слово с группированными битами.
- Аргументы
w слово
void u32From (u32 dest[], const void * src, size_t count)
Буфер [count]src преобразуется в массив [(count + 3) / 4]dest u32-слов.
- Аргументы
dest приемник
src источник
count число октетов
u32 u32NegInv (register u32 w)
Выполняется адиттивное и мультипликативное обращение u32-слова-как-числа w по модулю 2^32.
- Предусловие
w -- нечетное.
Возвращает
- w^{-1} \mod 2^32.
Прим.
Вычисляемое слово используется в редукции Монтгомери.
- Аргументы
w слово
bool_t u32Parity (register u32 w)
Определяется сумма по модулю 2 битов u32-слова w.
Возвращает
Сумма битов.
- Аргументы
w слово
u32 u32Rev (register u32 w)
Выполняется реверс октетов u32-слова w.
Возвращает
Слово с переставленными октетами.
- Аргументы
w слово
void u32Rev2 (u32 buf[], size_t count)
Выполняется реверс октетов массива [count]buf из u32-слов.
- Аргументы
buf [in,out] массив слов
count число элементов
u32 u32Shuffle (register u32 w)
Биты младшей половинки u32-слова w перемещаются в четные позиции, биты старшей половинки -- в нечетные.
Возвращает
Слово с растасованными битами.
- Аргументы
w слово
void u32To (void * dest, size_t count, const u32 src[])
Буфер [count]dest формируется по массиву [(count + 3) / 4]src u32-слов.
- Аргументы
dest приемник
count число октетов
src источник
size_t u32Weight (register u32 w)
Определяется число ненулевых битов в u32-слове w.
Возвращает
Число ненулевых битов.
- Аргументы
w слово
Автор
Автоматически создано Doxygen для Библиотека Bee2 из исходного текста.