我正在尝试在 C 中实现一个简单、中等效率的 bignum 库。我想使用它编译的系统的完整寄存器大小(大概是 32 位或 64 位整数)来存储数字。我的理解是,我可以使用 intptr_t 完成此操作。这个对吗?是否有更适合语义的类型,例如 intword_t?
我还知道,使用 GCC,我可以通过将两个参数向上转换为 64 位整数来轻松地在 32 位机器上进行溢出检测,这将占用两个寄存器并利用 IA31 ADC 之类的指令(带进位相加)。我可以在 64 位机器上做类似的事情吗?有没有我可以向上转换的 128 位类型,如果它们可用,它们将编译以使用这些指令?更好的是,是否有代表两倍寄存器大小的标准类型(如 intdoubleptr_t),因此可以以独立于机器的方式完成?
谢谢!