在不同的机器上获得不同的结果,并想知道这是否是预期的行为或某些CPU实施'>>>'操作时可能出现的错误?
Linux qemux86-64 4.18.41-yocto-standard #1 SMP PREEMPT Tue Oct 8 20:33:31 UTC 2019 x86_64 GNU/Linux
root@qemux86-64:~# node --v8-options|head -n 1
SSE3=1 SSSE3=1 SSE4_1=0 SAHF=1 AVX=0 FMA3=0 BMI1=0 BMI2=0 LZCNT=0 POPCNT=0 ATOM=0
root@qemux86-64:~# node -v
v8.12.0
root@qemux86-64:~# node -e 'console.log(undefined >>> 0)'
4294967295
在我测试的其他计算机上,(未定义>>> 0)的值为 0 。 但是,然后启用 的CPU功能: AVX FMA3 BMI1 BMI2 LZCNT POPCNT
答案 0 :(得分:2)
V8开发人员在这里。显然这是一个错误(undefined >>> 0
总是应该返回0
),但尚不清楚该错误可能在哪里:可能在V8中,可能在使用的C ++编译器中,可能在内核中或系统库,甚至可能在硬件中(或仿真器?主机名“ qemux86-64”听起来像它可能是虚拟机);本身也可能不是bug,而是这些组件中任何一个之间的意外交互。 FWIW,我无法复制。
节点8也相当老,因此首先要尝试的是较新的节点/ V8。也许它已经修复了。
如果您仍然可以使用最新版本(例如,Node 12 / V8 7.7或更高版本)进行复制,则请在crbug.com/v8/new处提交错误,并附上有关如何复制的说明。随时在此处留下错误号。