Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
"main" : Das Mischen _m64 und Gleitkommaausdrücke kann zu einem falschen Code führen.
Eine Funktion verwendet __m64 und float/double Typen. Da die MMX- und Gleitkommaregister denselben physischen Registerraum gemeinsam nutzen (kann nicht gleichzeitig verwendet werden), kann die Verwendung __m64 und float/double typen in derselben Funktion zu Einer Datenbeschädigung führen, was möglicherweise zu einer Ausnahme führt.
Um Typen und Gleitkommatypen in derselben Funktion sicher zu verwenden __m64 , sollten jede Anweisung, die einen der Typen verwendet, durch die _m_empty() (für MMX) oder _m_femms() (für 3DNow!) systemintern getrennt werden.
Im folgenden Beispiel wird C4730 generiert:
// C4730.cpp
// compile with: /W1
// processor: x86
#include "mmintrin.h"
void func(double)
{
}
int main(__m64 a, __m64 b)
{
__m64 m;
double f;
f = 1.0;
m = _m_paddb(a, b);
// uncomment the next line to resolve C4730
// _m_empty();
func(f * 3.0); // C4730
}