Hello!
Can someone help me with the following assemblercode
I want to use this function in my c++ programm. I am using Vc++ 6.0.Code:extern "C" long double _cdecl exp (double x)
_exp PROC NEAR
PUBLIC _exp
FLDL2E
FLD QWORD PTR [ESP+4] //; x
FMUL //; z = x*log2(e)
FIST DWORD PTR [ESP+4] // round(z)
SUB ESP, 12
MOV DWORD PTR [ESP], 0
MOV DWORD PTR [ESP+4], 80000000H
FISUB DWORD PTR [ESP+16] //; z - round(z)
MOV EAX, [ESP+16]
ADD EAX,3FFFH
MOV [ESP+8],EAX
JLE SHORT UNDERFLOW
CMP EAX,8000H
JGE SHORT OVERFLOW
F2XM1
FLD1
FADD //; 2^(z-round(z))
FLD TBYTE PTR [ESP] //; 2^(round(z))
ADD ESP,12
FMUL //; 2^z = e^x
RET
UNDERFLOW:
FSTP ST
FLDZ //; return 0
ADD ESP,12
RET
OVERFLOW:
PUSH 07F800000H //; +infinity
FSTP ST
FLD DWORD PTR [ESP] //; return infinity
ADD ESP,16
RET
_exp ENDP
return 0
}
Thanks in advance
