32ビット浮動小数点を拡張精度の80ビット浮動小数点に変換しようとしています。 私はMSVC x86を使用しています。 void *outValue
は10のバイトを保持するのに十分な大きさのバッファであり、ここで32ビット浮動小数点数をIEEE 80ビットに変換
void Convert32To80(float *value, void *outValue)
{
__asm
{
fld float ptr [value];
fstp tbyte ptr [outValue];
}
}
:私は、次のインラインASMコードを試してみました。 これは私には似ていますが、実行時にはクラッシュしています。
ご協力いただきましてありがとうございます。後世のため
「実行時にクラッシュする」具体的なエラーは何ですか? – James
私は特に具体的なエラーはありません。これはマネージドコードからロードされるC++/CLIのdllです(ASMのもの、他のインラインASMスタブがうまく動作します)。私はこれを得ます: "エラーのアドレスは0x64f9fca1、スレッド0x1904にありましたエラーコードは0xc0000005ですこのエラーは、CLRのバグ、このバグの一般的な原因には、COM-interopまたはPInvokeのユーザーマーシャリングエラーがあり、スタックを破損する可能性があります。 – Janiels
クラッシュの原因となった命令は、デバッガに確認する必要があります。おそらくあなたのoutValueが悪いです(NULLなど)? – Suma