YoushouldhavereceivedcopiesoftheGNUGeneralPublicLicenseandthe GNULesserGeneralPublicLicensealongwiththeGNUMPLibrary.Ifnot,
see https://www.gnu.org/licenses/. */
/* Select entry `which' from table `tab', which has nents entries, each `n' limbs.Storetheselectedentryatrp.Readsentiretabletoavoid
side-channel information leaks. O(n*nents). */
/* Place first entry into result area. */ for (i = 0; i < n; i++)
rp[i] = tp[i];
/* Conditionally replace entry in result area by entry 1...(nents-1) using
masking trickery. */ for (k = 1; k < nents; k++)
{ /* Generate a mask using an expression which all compilers should compile intobranch-freecode.Theconvolutedexpressionisdesignedtoboth
allow mp_limb_t greater and mp_limb_t smaller than mp_size_t. */
mask = -(mp_limb_t) ((-(unsignedlong) (which ^ k)) >> (BITS_PER_ULONG - 1));
tp += n; for (i = 0; i < n; i++)
rp[i] = (rp[i] & mask) | (tp[i] & ~mask);
}
} #endif
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.