首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不同编译器的RDRAND和RDSEED本质?

不同编译器的RDRAND和RDSEED本质?
EN

Stack Overflow用户
提问于 2015-03-31 15:49:54
回答 2查看 4.5K关注 0票数 5

英特尔的C++编译器和/或GCC是否支持以下英特尔本质,就像2012 /2013年以来的MSVC一样?

代码语言:javascript
复制
#include <immintrin.h>  // for the following intrinsics
int _rdrand16_step(uint16_t*);
int _rdrand32_step(uint32_t*);
int _rdrand64_step(uint64_t*);
int _rdseed16_step(uint16_t*);
int _rdseed32_step(uint32_t*);
int _rdseed64_step(uint64_t*);

如果支持这些本质,因为它们支持哪个版本(请使用编译时间常数)?

EN

回答 2

Stack Overflow用户

发布于 2015-03-31 18:03:15

GCC和英特尔编译器都支持他们。GCC的支持是在2010年底推出的。它们需要头<immintrin.h>

GCC支持已经存在,至少从4.6版本,但似乎没有任何具体的编译时常数-你可以只检查__GNUC_MAJOR__ > 4 || (__GNUC_MAJOR__ == 4 && __GNUC_MINOR__ >= 6)

票数 7
EN

Stack Overflow用户

发布于 2015-07-06 22:27:51

Microsoft编译器不支持RDSEED和RDRAND指令。

但是,您可以使用NASM或MASM实现这些指令。汇编代码可从以下网址获得:

https://software.intel.com/en-us/articles/intel-digital-random-number-generator-drng-software-implementation-guide

对于Intel编译器,您可以使用标头来确定版本。您可以使用以下宏来确定版本和子版本:

代码语言:javascript
复制
__INTEL_COMPILER //Major Version
__INTEL_COMPILER_UPDATE // Minor Update.

例如,如果使用ICC15.0Update 3编译器,它将显示

代码语言:javascript
复制
__INTEL_COMPILER  = 1500
__INTEL_COMPILER_UPDATE = 3

有关预定义宏的更多详细信息,请访问:https://software.intel.com/en-us/node/524490

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29372893

复制
相关文章

相似问题

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