首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >微软编译器下_rdrand_step本质的可用性?

微软编译器下_rdrand_step本质的可用性?
EN

Stack Overflow用户
提问于 2015-10-12 02:58:04
回答 2查看 613关注 0票数 2

根据微软的x64 (amd64) Intrinsics列表,微软为RDRAND提供了一个内在的:

  • _rdrand16_step
  • _rdrand32_step
  • _rdrand64_step

但是,该页面并没有讨论如何检测内部信息的可用性。2有一个脚注,但它说它只适用于英特尔CPU。

我有两个问题。首先,如何检测本质的可用性。也就是说,我应该使用什么预处理器宏来保护调用,比如_rdrand64_step

第二,如何在AMD CPU下访问RDRAND。根据AMD手册,AMD也提供它。

(更有趣的是,微软将页面命名为amd64内在列表。当他们不包括AMD时,他们为什么称它为AMD64内在列表??)

对于AMD和RDRAND指令,参考AMD64体系结构程序员手册第3卷:一般用途和系统说明,第278页。

EN

回答 2

Stack Overflow用户

发布于 2015-10-19 18:20:13

首先,如何检测本质的可用性。也就是说,我应该使用什么预处理器宏来保护调用,比如_rdrand64_step。

以下是RDRAND本质所需的编译器版本:

  • 微软在2012年8月加入了RDRAND,VS2012。_MSC_VER >= 1700测试。
  • GCC在2010年12月加入RDRAND,GCC 4.6。
  • Clang在2012年7月添加了RDRAND,Clang 3.2。
  • 英特尔在2011年9月增加了RDRAND,ICC 12.1。

第二,如何在AMD CPU下访问RDRAND。根据AMD手册,AMD也提供它。

提供RDRAND指令的AMD CPU似乎即将问世。也就是说,目前没有带有此功能的CPU。

微软文档清楚地说明了本质是只适用于Intel CPU的。为了确保AMD支持考虑到英特尔和AMD之间的反竞争历史,ASM应该手工制作并与MASM/ML和MASM 64/ML组装。

票数 2
EN

Stack Overflow用户

发布于 2015-10-12 06:28:11

您可以使用以下方法检查MS编译器的版本:

  1. MSVC++ 14.0 _MSC_VER == 1900 (Visual 2015) 详细信息
  2. 我不知道如何使用它与AMD架构。如果我找到解决办法会告诉你
  3. 您可以得到MS文档为什么称它为amd64 在这个岗位上的原因。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33072605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档