1

我试图理解 Erik August ( https://gist.github.com/ErikAugust/724d4a969fb2c6ae1bbd7b2a9e3d4bb6 ) 的 Spectre PoC。在第 76 行它说

x = ((j % 6) - 1) & ~0xFFFF;

所以我知道&是按位与并~返回按位补码。如果j%60我明白为什么x=FFF.FF0000。但我想知道为什么x=0在其他情况下。为什么不是例如0xFFFF0001

谢谢你的帮助!

4

1 回答 1

1

~0xFFFF 给你 0xFFFF_0000

((j % 6) - 1) 的结果可能是 -1 (0xFFFF_FFFF) 或 0-4

对于 0 到 4,如果您将其与 0xFFFF_0000 与,则为 0。

例子:

0xFFFF_0000
0x0000_0001 
----AND----
0x0000_0000
于 2018-09-27T21:12:21.787 回答