我試圖將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