[英]Availability of _rdrand_step intrinsics under Microsoft compilers?
根据Microsoft的x64(amd64)内部函数列表 ,Microsoft提供了RDRAND的内部函数:
_rdrand16_step
_rdrand32_step
_rdrand64_step
但是,该页面没有讨论检测内部函数的可用性。 [2]有一个脚注,但它说它仅适用于Intel CPU。
我有两个问题。 首先,我如何检测内在函数的可用性。 也就是说,应该使用哪个预处理程序宏来保护调用_rdrand64_step
的调用。
其次,如何在AMD CPU下访问RDRAND。 根据AMD手册,AMD也提供它。
(更幽默的是,Microsoft为页面amd64 Intrinsic List命名。为什么当不包括AMD时为什么将其称为AMD64 Intrinsic List?)
有关AMD和RDRAND指令,请参考AMD64体系结构程序员手册第3卷:通用和系统指令 ,第278页。
首先,我如何检测内在函数的可用性。 也就是说,我应该使用哪个预处理程序宏来保护调用_rdrand64_step的调用。
以下是RDRAND内部函数所需的编译器版本:
_MSC_VER >= 1700
。 其次,如何在AMD CPU下访问RDRAND。 根据AMD手册,AMD也提供它。
提供RDRAND指令的AMD CPU即将面世。 也就是说,当前没有附带此功能的CPU。
Microsoft文档明确声明了内在函数仅适用于Intel CPU。 考虑到Intel和AMD之间的反竞争历史,要确保AMD支持,ASM应该手工制作并与MASM / ML和MASM64 / ML64组装在一起。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.