C中x64的128位算术运算

在x86上实现bignums时,显然数字大小的最有效选择是32位。 但是,您需要算术最多两倍的数字大小(即32 + 32 = 33,32 * 32 = 64,64 / 32 = 32)。 幸运的是,x86不仅提供了这一function,而且还可以从便携式C(uint64_t)访问它。

类似地,在x64上,希望使用64位数字。 这将需要128位算术(即64 + 64 = 65,64 * 64 = 128,128 / 64 = 64)。 幸运的是,x64提供了这个function。 不幸的是,它无法通过便携式C接入,但显然有人可以进入组装。

所以我的问题是它是否可从非便携式C访问.X64上的任何C编译器是否提供对此的访问,如果是,那么语法是什么?

(注意,我不是在谈论128位向量,它们被严格地视为32或64位字的集合,它们之间没有进位传播,但是关于实际的128位整数运算。)

gcc将__uint128_t__int128_t作为扩展名。

您可能想要检查GNU多精度算术库:

http://gmplib.org/