Den*_*hev 5 floating-point fpu visual-c++
从扩展精度浮点数(80位值,在某些编译器中也称为“ long double”)转换为MSVC win32 / win64中double(64位)的最便捷和“正确”的方法是什么?
MSVC当前(截至2010年)假定“ long double”是“ double”的同义词。
我可能可以在内联汇编中编写fld / fstp汇编程序对,但是内联汇编不适用于MSVC中的win64代码。我是否需要将此汇编代码移至单独的.asm文件?真的是这样,没有好的解决方案吗?
小智 5
只是在 x86 代码中做到了这一点......
.686P
.XMM
_TEXT SEGMENT
EXTRN __fltused:DWORD
PUBLIC _cvt80to64
PUBLIC _cvt64to80
_cvt80to64 PROC
mov eax, dword ptr [esp+4]
fld TBYTE PTR [eax]
ret 0
_cvt80to64 ENDP
_cvt64to80 PROC
mov eax, DWORD PTR [esp+12]
fld QWORD PTR [esp+4]
fstp TBYTE PTR [eax]
ret 0
_cvt64to80 ENDP
ENDIF
_TEXT ENDS
END
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3834 次 |
| 最近记录: |