根据微软的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页。
发布于 2015-10-19 18:20:13
首先,如何检测本质的可用性。也就是说,我应该使用什么预处理器宏来保护调用,比如_rdrand64_step。
以下是RDRAND本质所需的编译器版本:
_MSC_VER >= 1700测试。第二,如何在AMD CPU下访问RDRAND。根据AMD手册,AMD也提供它。
提供RDRAND指令的AMD CPU似乎即将问世。也就是说,目前没有带有此功能的CPU。
微软文档清楚地说明了本质是只适用于Intel CPU的。为了确保AMD支持考虑到英特尔和AMD之间的反竞争历史,ASM应该手工制作并与MASM/ML和MASM 64/ML组装。
https://stackoverflow.com/questions/33072605
复制相似问题