gpt4 book ai didi

visual-c++ - 在 MSVC 中将扩展精度浮点(80 位)转换为 double (64 位)

转载 作者:行者123 更新时间:2023-12-04 06:37:03 25 4
gpt4 key购买 nike

在 MSVC win32/win64 中,从扩展精度浮点(80 位值,在某些编译器中也称为 long double)到 double (64 位)进行转换的最便携和“正确”的方法是什么?

MSVC 当前(截至 2010 年)假设 long doubledouble代名词。

我大概可以写 fld/fstp内联汇编中的汇编器对,但内联汇编不适用于 MSVC 中的 win64 代码。我是否需要将此汇编代码移动到单独的 .asm 文件中?难道真的没有什么好的解决办法吗?

最佳答案

只是在 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

关于visual-c++ - 在 MSVC 中将扩展精度浮点(80 位)转换为 double (64 位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2963055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com