我试图将32位浮点数转换为扩展精度80位浮点数。 我正在使用MSVC x86。我试着下面的内联汇编代码:将32位浮点数转换为IEEE 80位
void Convert32To80(float *value, void *outValue)
{
__asm
{
fld float ptr [value];
fstp tbyte ptr [outValue];
}
}
这里,void *outValue
是一个缓冲区是大到足以容纳10个字节。 这看起来很适合我,但它运行时会崩溃。
任何帮助表示赞赏!
“运行时崩溃”。你会得到什么具体的错误? – James 2011-01-06 12:18:03
我没有得到具体的错误。这是一个从托管代码加载的C++/CLI dll(它是ASM的东西,其他内联ASM存根工作正常)。我得到这个: “运行时遇到了一个致命错误,错误的地址是0x64f9fca1,线程0x1904,错误代码是0xc0000005,这个错误可能是CLR或不安全或不安全的错误,可验证的用户代码部分这个错误的常见来源包括COM-interop或PInvoke的用户编组错误,这可能会破坏堆栈。“ – Janiels 2011-01-06 12:21:46
您需要与调试器一起检查哪条指令导致崩溃。也许你的outValue不好(NULL或类似的东西)? – Suma 2011-01-06 12:50:29