Hola!
Estoy pasando un código de VC 2008 a MASM y me he encontrado con lo siguiente:
FLD QWORD PTR SS:[EBP-24]
MOV ESI,EAX
CALL 20375090 ;__ftol2_sse
CDQ
Según tengo entendido, esta función se encarga de convertir un Float en Dword. El problema es que no encuentro ninguna macro o función que me permita hacer lo mismo que hace esta función en MASM.
¿ Alguien tiene alguna idea ?
Directo del WinDbg:
floating!_ftol2_sse:
00401260 833d7093420000 cmp dword ptr [x!__sse2_available (00429370)],0 ds:0023:00429370=00000001
00401267 742d je x!_ftol2 (00401296)
floating!_ftol2_pentium4:
00401269 55 push ebp
0040126a 8bec mov ebp,esp
0040126c 83ec08 sub esp,8
0040126f 83e4f8 and esp,0FFFFFFF8h
00401272 dd1c24 fstp qword ptr [esp]
00401275 f20f2c0424 cvttsd2si eax,mmword ptr [esp]
0040127a c9 leave
0040127b c3 ret
De igual manera podes encontrar _ftol2.
Gracias Ethernal Idol!!
Aunque ya habia hecho una implementación en base a OllyDbg.
Me quedó asi:
ftol2 proc
; local tmp:DWORD
; fistp tmp
; mov eax, tmp
; ret
push ebp
mov ebp,esp
sub esp,020h
and esp,0fffffff0h
fld st
fst dword ptr ss:[esp+018h]
fistp qword ptr ss:[esp+010h]
fild qword ptr ss:[esp+010h]
mov edx,dword ptr ss:[esp+018h]
mov eax,dword ptr ss:[esp+010h]
test eax,eax
je @Converte_20375125
@Converte_203750E9:
fsubp st(1),st
test edx,edx
jns @Converte_2037510D
fstp dword ptr ss:[esp]
mov ecx,dword ptr ss:[esp]
xor ecx,080000000h
add ecx,07fffffffh
adc eax,0
mov edx,dword ptr ss:[esp+014h]
adc edx,0
jmp @Converte_20375139
@Converte_2037510D:
fstp dword ptr ss:[esp]
mov ecx,dword ptr ss:[esp]
add ecx,07fffffffh
sbb eax,0
mov edx,dword ptr ss:[esp+014h]
sbb edx,0
jmp @Converte_20375139
@Converte_20375125:
mov edx,dword ptr ss:[esp+014h]
test edx,07fffffffh
jnz @Converte_203750E9
fstp dword ptr ss:[esp+018h]
fstp dword ptr ss:[esp+018h]
@Converte_20375139:
leave
retn ;<= Procedure End
ftol2 endp
(Es el código que viene luego del Je tuyo de 401267, es por si la PC no tiene SSE2)
De todas formas, nuevamente, Gracias ;D
PD: Lo comentado es una versión "reducida", pero tiene falencias... :silbar:
De nada y si como te decia de igual manera podias encontrar _ftol2.