In the following code, I am wondering about the role of fld ST(0)
. I have heard it duplicates the top value in the stack but I don't know where does it bring that value in the following code?
fild dword ptr [L1000F140]
fstp qword ptr [esp+20h]
fld ST(0)
fdiv qword ptr [L1000F148]
fmul qword ptr [L1000A520]
My interpret is that code above in symbolic way means:
value[esp+20h]= value[L1000F140]
new stack top value=value[esp+20h]/value[L1000F148]*value[L1000A520]
Am I correct?
I wonder why fstp
does not pop the loaded value so fld
has duplicated value[L1000F140]
it?