x86 で bignum を実装する場合、明らかに最も効率的な桁サイズの選択は 32 ビットです。ただし、桁サイズの 2 倍までの算術演算が必要です (つまり、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 ビット整数演算について話していることに注意してください。)