Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis 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
}