シンプルで適度に効率的なbignumライブラリをCに実装しようとしています。コンパイルされたシステムのフルレジスタサイズ(おそらく32ビットまたは64ビットint)を使用して数字を格納したいと思います。私の理解では、intptr_tを使用してこれを達成できます。これは正しいです?より意味的に適切なタイプ、つまりintword_tのようなものはありますか?
また、GCCを使用すると、両方の引数を64ビットintにアップキャストすることで、32ビットマシンでオーバーフロー検出を簡単に実行できます。64ビットintは、2つのレジスタを占有し、IA31 ADC(キャリー付きで追加)などの命令を利用します。64ビットマシンで同様のことを行うことはできますか?これらの命令が利用可能な場合にコンパイルしてこれらの命令を使用するようにアップキャストできる128ビットタイプはありますか?さらに良いことに、レジスタサイズの2倍を表す標準タイプ(intdoubleptr_tなど)があるので、これはマシンに依存しない方法で実行できますか?
ありがとう!