问题标签 [rdrand]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 正确使用 RDRAND(片上生成器)作为 std::random_device 与 Visual C++ 的随机库
我希望能够在可用时使用硬件随机数生成器,并且无论英特尔或 AMD 运行代码如何,都可以使用 C++ 随机库:
根据这篇文章,entropy()
应该在没有 RDRAND 的 cpu 上返回 0,例如 i7-2670qm ivy 桥(我在其上测试过 - RDRAND 第一次出现在其继任者 Sandy Bridge 中),但在 Visual Studio 中始终为 32如此处所述。有人建议缺少随机设备可能会导致operator()
抛出异常,但这也不会发生。
例如,可以使用内在函数int _rdrand32_step (unsigned int* val)
,但只能从均匀分布中提取,我需要能够利用 C++ 随机库中可用的分布。
此外,代码应该使用 AMD cpu 上的硬件生成器。
random
在 Visual Studio(2017、2019)中将硬件随机数生成器(RDRAND)与 C++ 库一起使用的正确方法是什么?
c++ - 不能将 uint64_t 与 rdrand 一起使用,因为它需要 unsigned long long,但 uint64_t 被定义为 unsigned long
在尝试使用 rdrand 内在函数时,我遇到了以下烦恼。
使用我当前的编译器unsigned long
并且unsigned long long
都是 64 位的。但是, uint64_t 被定义为unsigned long
while_rdrand64_step
需要一个指向unsigned long long
.
在英特尔的网站上,该功能被定义为int _rdrand64_step (unsigned __int64* val)
. 我怎样才能以便携的方式处理这个问题?
铿锵 11.0 -march=ivybridge -O2
( https://godbolt.org/z/55sjsG ):
delphi - 将 ASM 指令 RDRand 转换为 Win64
我有这个功能(RDRand - 由David Heffernan编写)在 32 位中可以正常工作,但在 64 位中失败:
尤其是这样写:
本质上,开发人员使用单个操作数调用此指令:将存储随机值的目标寄存器。请注意,此寄存器必须是通用寄存器,寄存器的大小(16、32 或 64 位)将决定返回的随机值的大小。
调用 RDRAND 指令后,调用者必须检查进位标志 (CF) 以确定在执行 RDRAND 指令时是否有可用的随机值。如表 3 所示,值 1 表示随机值可用并放置在调用中提供的目标寄存器中。值 0 表示随机值不可用。在当前架构中,目标寄存器也将作为这种情况的副作用归零。
我对 ASM 的了解很少,我错过了什么?
我也不太明白这个指令:
它到底是做什么的?
random - 是否可以直接在 M1 中使用安全飞地中的 TRNG?
所以过去我在英特尔中使用 RDRAND 直接访问真正的随机数生成器,但现在我正在考虑为 M1 重写我的应用程序 - 是否有一些类似的内在特性_rdseed16_step
?
或者是内核在此处使用getentropy
或的唯一说明/dev/random
- 我不想与其他熵源混合,而是直接访问安全飞地 TRNG。
gcc - Oracle Linux 中的 Valgrind 安装错误
我正在开发 Oracle Linux Server 6.5 版。
GCC 版本 4.4.7
我正在尝试安装 Valgrind valgrind-3.17.0 但最终出错。您能就以下问题提出建议吗?提前致谢。
以下是我遵循的步骤:
。/配置
当我在运行./configure后查看日志时,发现有一句话为:
checking if amd64 assembler knows the RDSEED instruction... no
进行安装
assembly - 将 rdrand 指令获取的 64 位数据加载到整个页面,并使用指令 vmovdqa64 将其写入 zmm0 寄存器
调用rdrand
指令将给出 Ex: 的 64 位值8609 a544 8609 a544
。我希望将相同的 64 位值写入大小为 512 的整个页面。并且此数据将使用 vmovdqa64 指令加载到 zmm0 寄存器。
例:所需数据如下
目前我正在获取以下数据