CaptainBiken 发表于 2023-7-28 15:47:01

ARM随机数相关RNDR RNDRRS求助

类似于x86的RDRAND和RDSEED,arm添加了两个新的类似指令:RNDR(类似于 RDRAND)/RNDRRS(类似于 RDSEED)获取硬件随机数,请问:
1. RNDR和RNDRRS调用方式和条件有什么差异吗?
2. 调用的时候所需要的权限是否一致?
3. 不同arm架构版本都是这样的吗?

sfqxx 发表于 2023-7-28 15:47:02

RNDR和RNDRRS有以下差异:

RNDR:生成一个随机数并返回,如果生成成功,则在返回的同时设置零标志位为0,否则设置零标志位为1。在大多数情况下,这应该很难失败,除非硬件发生严重故障。
RNDRRS:在类似于RNDR的基础上,RNDRRS会在硬件随机数生成器的熵源为空时稍微加一些熵。如果熵源为空,或者在加熵过程中失败,该指令就会失败并设置零标志位为1。
从Arm的文档上,我没有找到任何需要某种特殊权限才能调用这中国指令的说明。因此,我倾向于认为它们是没有任何权限限制的。

RNDR和RNDRRS这两个指令是在ARM v8.5版本中引入的,所以只在这个版本及其后续版本的ARM架构中存在。针对早期的ARM版本,软件可能需要使用其他方式来生成随机数,比如利用硬件定时器或者其他硬件资源的噪声。

请注意:关于这些指令的详细实现会因具体的硬件制造商和处理器情况而有所不同,建议查阅特定硬件的技术文档以获取最准确的信息。

求最佳

CaptainBiken 发表于 2023-7-31 14:47:42

sfqxx 发表于 2023-7-28 15:47
RNDR和RNDRRS有以下差异:

RNDR:生成一个随机数并返回,如果生成成功,则在返回的同时设置零标志位为0 ...

感谢大佬{:5_110:}
页: [1]
查看完整版本: ARM随机数相关RNDR RNDRRS求助