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




Reply With Quote