2

Microsoft のx64 (amd64) Intrinsics Listによると、Microsoft は RDRAND の組み込みを提供しています。

  • _rdrand16_step
  • _rdrand32_step
  • _rdrand64_step

ただし、このページでは、組み込みの可用性の検出については説明していません。[2]の脚注がありますが、Intel CPU でのみ利用可能であると書かれています。

2 つの質問があります。まず、組み込み関数の可用性をどのように検出できますか。つまり、 say の呼び出しを保護するためにどのプリプロセッサ マクロを使用すればよいかということ_rdrand64_stepです。

次に、AMD CPU で RDRAND にアクセスするにはどうすればよいですか。AMD のマニュアルによると、AMD も提供しています。

(さらにユーモラスなことに、Microsoft はページに amd64 Intrinsic List というタイトルを付けています。AMD を含まないのに、なぜ AMD64 Intrinsic List と呼ぶのですか???)


AMD および RDRAND 命令については、AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructionsの 278 ページを参照してください。

4

2 に答える 2

2

まず、組み込み関数の可用性をどのように検出できますか。つまり、_rdrand64_step の呼び出しを保護するために、どのプリプロセッサ マクロを使用すればよいかということです。

RDRAND 組み込み関数に必要なコンパイラのバージョンは次のとおりです。

  • Microsoft は、2012 年 8 月の VS2012 で RDRAND を追加しました。をテストし_MSC_VER >= 1700ます。
  • GCC は 2010 年 12 月、GCC 4.6 で RDRAND を追加しました。
  • Clang は、2012 年 7 月の Clang 3.2 で RDRAND を追加しました。
  • Intel は、2011 年 9 月の ICC 12.1 で RDRAND を追加しました。

次に、AMD CPU で RDRAND にアクセスするにはどうすればよいですか。AMD のマニュアルによると、AMD も提供しています。

RDRAND 命令を提供する AMD CPU が間もなく登場するようです。つまり、現在、この機能を搭載した CPU は出荷されていません。

Microsoft のドキュメントには、組み込み関数が Intel CPU 専用であることが明確に記載されています。Intel と AMD の間の反競争的な歴史を考慮して、 AMD のサポートを確保するには、ASM を手作業で作成し、MASM/ML および MASM64/ML64 で組み立てる必要があります。

于 2015-10-19T18:20:13.570 に答える
1

次を使用して、MS コンパイラのバージョンを確認できます。

  1. MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015) 詳細

  2. AMD アーキテクチャでの使用方法がわかりません。何らかの解決策が得られたらお知らせします

  3. MS のドキュメントで amd64 と呼ばれる理由については、この投稿で回答を得ることができます。

于 2015-10-12T06:28:11.750 に答える