首页
社区
课程
招聘
[求助]对几个浮点指令有点糊涂,请教我。
发表于: 2007-7-27 17:12 3444

[求助]对几个浮点指令有点糊涂,请教我。

2007-7-27 17:12
3444
我在VC中反汇编了一个c表达式:
float x=1;y=2;y+=++x*++x;如下:
mov dword ptr [ebp-4],3F800000h       ;x=1
mov dword ptr [ebp-8],2                       ;y=2

fild       dword ptr [ebp-8]                            ;y->st(0)
fld        dword ptr [ebp-4]                            ;x->st(0),y->st(1)
fadd     dword ptr [_real@4@3fff8000000000000000 (00426020)]      
         ;我看到站里的教材说fadd是st(0) <-st(0) + st(1),应该没有操作数 呀,这里的怎么有?什么意思? 按照教程理解:st(0)=3,st(1)=2
fst        dword ptr [ebp-4]                         ;如果把上面的操作数看成无用的话,这里x=3了
fadd     dword ptr [_real@4@3fff8000000000000000 (00426020)]       ;又来一个 此时st(0)=5,st(1)=2
fst        dword ptr [ebp-4]                         ;x=5
fmul     dword pte [ebp-4]                        
                         ;教程中fmul应该st(0) <- st(0) * st(1),应该也没有操作数呀,这里的怎么有?什么意思如果也把操作数看成无用,按教程理解此时st(0)=10,st(1)=2
faddp   st(1),st               ;st(0)=10,st(1)=12,出栈也不知道是不是出到原来的ebp-4和ebp-8的位置,如果是那x=10,y=12
call     _ftol (00401208)
mov   dword ptr [ebp-8],eax

以上是我的理解一定不对因为x=3,y=11请哪位帮我找找哪儿理解错了应该是怎样的,谢谢!!!

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 47147
活跃值: (20380)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
http://www.pediy.com/tutorial/chap2/Chap2-4.htm

FADD src  st(0) <-st(0) + src (mem32/mem64)
2007-7-27 19:42
0
游客
登录 | 注册 方可回帖
返回
//