Visual C++ には本当に 128 ビット除算の組み込み関数がないのでしょうか?
と呼ばれる 64x64=128 ビットの乗算組み込み関数があり、これはx64 アセンブラー命令_umul128()
とうまく一致します。MUL
当然のことながら、128/64=64 ビットの除算組み込み (DIV
命令のモデル化) もあると思いましたが、驚いたことに、Visual C++ も Intel C++ もそれを持っていないようで、少なくとも intrin.h にはリストされていません。
誰かがそれを確認できますか?コンパイラの実行ファイルの関数名をgrepしてみましたが、そもそも見つからなかっ_umul128
たので、探し方を間違えたのでしょう。
更新: 少なくともumul128
、Visual C++ 2010 の c1.dll でパターン (先頭のアンダースコアなし) を見つけました。他のすべての組み込み関数はその周りにリストされていますが、残念ながら「udiv128」などはありません:(それを実装することを「忘れて」います。
明確にするために:私は128ビットのデータ型を探しているだけでなく、C++で128ビットのスカラーintを64ビットのintで割る方法も探しています。組み込み関数またはネイティブの128 ビット整数サポートのいずれかが問題を解決します。
編集:答えはノーです_udiv128
。Visual Studio 2010 から 2017 までの組み込み関数はありませんが、Visual Studio 2019 RTM で利用できます。