在 x86 上实现 bignums 时,显然最有效的数字大小选择是 32 位。但是,您需要最多两倍于数字大小的算术(即 32+32=33、32*32=64、64/32=32)。幸运的是,x86 不仅提供了这一点,而且还可以从可移植的 C ( uint64_t
) 中访问它。
同样,在 x64 上,最好使用 64 位数字。这将需要 128 位算术(即 64+64=65、64*64=128、128/64=64)。幸运的是,x64 提供了这一点。不幸的是,它不能从便携式 C 中访问,尽管显然可以使用汇编。
所以我的问题是它是否可以从不可移植的 C 中访问。x64 上的任何 C 编译器是否提供对此的访问,如果是,语法是什么?
(请注意,我不是在谈论被严格视为 32 或 64 位字的集合的 128 位向量,它们之间没有进位传播,而是关于实际的 128 位整数运算。)