我正在逆向工程一个应用程序,4.294967296e9如果数字为负,它通常会增加一个双精度数。部分拆解:
mov eax, label_to_memory
fild label_to_memory
test eax, eax
jge short some_label
fadd ds:some_double_value
some_label:
如果我是对的,如果最高位没有设置,即它是一个正数,它就会跳转。some_double_value指向常数4.294967296e9。
要了解这段代码在做什么,我需要知道为什么它添加了这个特定的数字,我发现的唯一一条信息是http://web.mit.edu/~mkgray/afs/bar/ 中的一行代码afs/net/project/attic/quipu/isode-8.0/others/ntp/ntpsubs.c其中说
#ifdef VAX_COMPILER_FLT_BUG
if (b < 0.0) b += 4.294967296e9;
#endif
那么,这个数字有什么意义呢?
附加信息:数字不能为负,因此这实际上永远不会发生。