u32.h - Man Page

32-разрядные слова

Synopsis

#include 'bee2/defs.h'
#include 'bee2/core/safe.h'

Макросы

#define u32RotHi(w,  d)   ((u32)((w) << (d) | (w) >> (32 - (d))))
Циклический сдвиг u32-слова на d позиций в сторону старших разрядов
#define u32RotLo(w,  d)   ((u32)((w) >> (d) | (w) << (32 - (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 слово

size_t FAST u32CTZ (register u32 w)

Определяется длина серии из нулевых младших битов u32-слова w.

Возвращает

Длина серии.

Прим.

CTZ == Count of Trailing Zeros

Регулярность

Имеется ускоренная нерегулярная редакция.

Аргументы

w слово

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 массив слов  
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 из исходного текста.

Info

Вт 23 Янв 2024 00:00:00 Библиотека Bee2