我在跟踪一个软件算法的时候碰到下面的浮点运算。
004AC670 > 8B5424 24 MOV EDX,DWORD PTR SS:[ESP+24]
004AC674 . DD84D4 8812000>FLD QWORD PTR SS:[ESP+EDX*8+1288]
//第一次到这里的时候 edx=0, SS:[ESP+EDX*8+1288] 的数据如下面给出的。st0=4.7999999999999998220
第二次到这里的时候 edx=1, SS:[ESP+EDX*8+1288] 的数据如下面给出的。st0=18.800000000000000710
第三次到这里的时候 edx=2, SS:[ESP+EDX*8+1288] 的数据如下面给出的。st0=53.399999999999998580
第四次到这里的时候 edx=3, SS:[ESP+EDX*8+1288] 的数据如下面给出的。st0=33.100000000000001420
帮忙看看怎么进行浮点运算才能得到这些st0。我怎么也算不出来。谢谢指点。
SS:[ESP+EDX*8+1288] <->SS:[0012E048]
0012E048 33333333
0012E04C 40133333
0012E050 CCCCCCCD
0012E054 4032CCCC
0012E058 33333333
0012E05C 404AB333
0012E060 CCCCCCCD
0012E064 40408CCC
0012E068 66666666
0012E06C 40026666
0012E070 33333333
接上面的004AC674,
004AC67B . DC0D 90085F00 FMUL QWORD PTR DS:[5F0890]
004AC681 . DC05 18715E00 FADD QWORD PTR DS:[5E7118]
004AC687 . E8 78B60900 CALL Diamond.00547D04
004AC68C . 8BF0 MOV ESI,EAX
004AC68E . DD44F4 48 FLD QWORD PTR SS:[ESP+ESI*8+48]
004AC692 . DC0D 90085F00 FMUL QWORD PTR DS:[5F0890]
004AC698 . DC05 18715E00 FADD QWORD PTR DS:[5E7118]
004AC69E . E8 61B60900 CALL Diamond.00547D04
004AC6A3 . 8B9CB4 C824000>MOV EBX,DWORD PTR SS:[ESP+ESI*4+24C8]
004AC6AA . 894424 20 MOV DWORD PTR SS:[ESP+20],EAX
004AC6AE . 8B4424 14 MOV EAX,DWORD PTR SS:[ESP+14]
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)