[英]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.