我在看着H.J. Lu的PATCH: Update x86 rdrand intrinsics。我无法判断我是否应该使用MacBook-Pro:~ Dilawer$ node -v
v0.12.5
MacBook-Pro:~ Dilawer$ npm -v
2.12.1
MacBook-Pro:~ Dilawer$ npm install -g jade
npm ERR! tar.unpack untar error /Users/Dilawer/.npm/jade/1.11.0/package.tgz
npm ERR! Darwin 14.4.0
npm ERR! argv "node" "/usr/local/bin/npm" "install" "-g" "jade"
npm ERR! node v0.12.5
npm ERR! npm v2.12.1
npm ERR! path /usr/local/lib/node_modules/jade
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! Error: EACCES, mkdir '/usr/local/lib/node_modules/jade'
npm ERR! at Error (native)
npm ERR! { [Error: EACCES, mkdir '/usr/local/lib/node_modules/jade']
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! path: '/usr/local/lib/node_modules/jade',
npm ERR! fstream_type: 'Directory',
npm ERR! fstream_path: '/usr/local/lib/node_modules/jade',
npm ERR! fstream_class: 'DirWriter',
npm ERR! fstream_stack:
npm ERR! [ '/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:35:25',
npm ERR! '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:47:53',
npm ERR! 'FSReqWrap.oncomplete (fs.js:95:15)' ] }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! Please include the following file with any support request:
npm ERR! /Users/Dilawer/npm-debug.log
MacBook-Pro:~ Dilawer$ sudo npm install -g jade
Password:
/usr/local/bin/jade -> /usr/local/lib/node_modules/jade/bin/jade.js
jade@1.11.0 /usr/local/lib/node_modules/jade
├── character-parser@1.2.1
├── void-elements@2.0.1
├── commander@2.6.0
├── mkdirp@0.5.1 (minimist@0.0.8)
├── jstransformer@0.0.2 (is-promise@2.0.0, promise@6.1.0)
├── with@4.0.3 (acorn-globals@1.0.4, acorn@1.2.2)
├── constantinople@3.0.1 (acorn-globals@1.0.4)
├── clean-css@3.3.5 (commander@2.8.1, source-map@0.4.2)
├── uglify-js@2.4.23 (uglify-to-browserify@1.0.2, async@0.2.10, source-map@0.1.34, yargs@3.5.4)
└── transformers@2.1.0 (promise@2.0.0, css@1.0.8, uglify-js@2.2.5)
MacBook-Pro:~ Dilawer$ sudo -s
bash-3.2# npm install -g jade
/usr/local/bin/jade -> /usr/local/lib/node_modules/jade/bin/jade.js
jade@1.11.0 /usr/local/lib/node_modules/jade
├── character-parser@1.2.1
├── void-elements@2.0.1
├── commander@2.6.0
├── mkdirp@0.5.1 (minimist@0.0.8)
├── jstransformer@0.0.2 (is-promise@2.0.0, promise@6.1.0)
├── with@4.0.3 (acorn-globals@1.0.4, acorn@1.2.2)
├── constantinople@3.0.1 (acorn-globals@1.0.4)
├── uglify-js@2.4.23 (uglify-to-browserify@1.0.2, async@0.2.10, yargs@3.5.4, source-map@0.1.34)
├── clean-css@3.3.5 (commander@2.8.1, source-map@0.4.2)
└── transformers@2.1.0 (promise@2.0.0, css@1.0.8, uglify-js@2.2.5)
bash-3.2#
,_rdrand_u64
,或者是否有其他功能。似乎没有为他们编写测试用例。
似乎还缺少手册页(来自Ubuntu 14,GCC 4.8.4):
_rdrand64_step
如何使用$ man -k rdrand
rdrand: nothing appropriate.
内在函数生成一个32字节的块?
相关问题是RDRAND and RDSEED intrinsics GCC and Intel C++。但它没有告诉我如何使用它们,或者如何生成块。
答案 0 :(得分:2)
如果你看一下<immintrin.h>
(我的是`/usr/lib/gcc/x86_64-linux-gnu/4.9/include/' ;, Ubuntu 15.04 64bit),那就是兼容的(和MSVC一样) ,Intel CC)函数已定义,将数据传递回GCC内置函数
extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_rdrand64_step (unsigned long long *__P)
{
return __builtin_ia32_rdrand64_step (__P);
}
表示64位参数,另外两个表示16位和32位参数
_rdrand16_step (unsigned short *__P)
_rdrand32_step (unsigned int *__P)
您应该使用这些代码,以便您的代码与MSVC,Intel CC和其他编译器兼容。
_rdrand64_step
将填充64位参数,由指针传递,带有随机位并返回错误代码。同样适用于32位和16位版本
更新
&#34;这些内在函数生成16/32/64位宽随机整数的随机数。生成的随机值将写入给定的内存位置,并返回成功状态:&#39; 1&#39; 1&#39;如果硬件返回了有效的随机值,并且&#39; 0&#39; 0否则&#34;