word.h - Man Page
Машинные слова
Synopsis
#include 'bee2/defs.h'
#include 'bee2/core/safe.h'
#include 'bee2/core/u32.h'
Макросы
#define wordEq(a, b)
Машинные слова a и b равны?
#define wordNeq(a, b)
Машинные слова a и b не равны?
#define wordLess(a, b)
Машинное слово a меньше машинного слова b?
#define wordLeq(a, b)
Машинное слово a не больше машинного слова b?
#define wordGreater(a, b)
Машинное слово a больше машинного слова b?
#define wordGeq(a, b)
Машинное слово a не меньше машинного слова b?
#define wordEq01(a, b)
Машинные слова a и b равны (WORD_0 / WORD_1)?
#define wordNeq01(a, b)
Машинные слова a и b не равны (WORD_0 / WORD_1)?
#define wordLess01(a, b)
Машинное слово a меньше машинного слова b (WORD_0 / WORD_1)?
#define wordLeq01(a, b)
Машинное слово a не больше машинного слова b (WORD_0 / WORD_1)?
#define wordGreater01(a, b)
Машинное слово a больше машинного слова b (WORD_0 / WORD_1)?
#define wordGeq01(a, b)
Машинное слово a не меньше машинного слова b (WORD_0 / WORD_1)?
#define wordEq0M(a, b)
Машинные слова a и b равны (WORD_0 / WORD_MAX)?
#define wordNeq0M(a, b)
Машинные слова a и b не равны (WORD_0 / WORD_MAX)?
#define wordLess0M(a, b)
Машинное слово a меньше машинного слова b (WORD_0 / WORD_MAX)?
#define wordLeq0M(a, b)
Машинное слово a не больше машинного слова b (WORD_0 / WORD_MAX)?
#define wordGreater0M(a, b)
Машинное слово a больше машинного слова b (WORD_0 / WORD_MAX)?
#define wordGeq0M(a, b)
Машинное слово a не меньше машинного слова b (WORD_0 / WORD_MAX)?
Подробное описание
Реализованы быстрые манипуляции с машинными словами.
Прим.
Манипуляции с массивами машинных слов реализованы в модуле ww.
Макросы сравнений введены для того, чтобы поддержать (и подчеркнуть) регулярный, т. е. без ветвлений, характер сравнений. На известных аппаратных платформах обычные сравнения a < b, a > b, a == b,... регулярны. Поэтому реализованные макросы являются псевдонимами этих сравнений.
Если обычные сравнения все таки не регулярны, то можно использовать следующие универсальные (но медленные) макросы [1, с. 35]:
#define wordLess(a, b)\ ((~(a) & (b) | ((~(a) | (b)) & (a) - (b))) >> (B_PER_W - 1)) #define wordLeq(a, b)\ (((~(a) | (b)) & (((a) ^ (b)) | ~((b) - (a)))) >> (B_PER_W - 1)) ...
Макросы сравнений без суффиксов 01 и 0M возвращают результат типа int.
Макросы с суффиксом 01 возвращают результат типа word, который принимает значения 0 (WORD_0) или 1 (WORD_1). Эти макросы удобно использовать в арифметике больших чсел.
Макросы с суффиксом 0M меняют WORD_1 на WORD_MAX. Возвращаемые значения можно использовать как маски при организации регулярных вычислений.
Автор
Автоматически создано Doxygen для Библиотека Bee2 из исходного текста.