-
-
[求助]有关fdiv的奇怪问题
-
发表于:
2008-9-29 21:36
3962
-
有一个DLL,它有一个导出函数,里面是大量的浮点操作。现在发现用不同的Exe调用它,得到的结果会不同。这个DLL是我写的,绝对没有做什么特殊处理,来故意使结果不一致。但是同样的汇编代码,同样的输入值,会什么输出会有区别呢?于是我用OD跟踪了两个Exe的调用过程,发现分歧点:
分歧前的浮点寄存器:
ST0 54.900001525878906250
ST1 2.5399999618530273440
分歧处的汇编代码:
fdiv st, st(1) //也就是拿st0除以st1,结果放到st0里面
运算结果:
A.EXE:ST0 21.614174153698510500
B.EXE:ST0 21.614173889160156250
不知道它这个是怎么算的,如果是同一个Exe,执行到这里的时候,每次结果都一样,但就是跟别的Exe不一样。
fdiv到底做了哪些工作???
[课程]Linux pwn 探索篇!