Avviso del compilatore (livello 1) C4730

'main': la combinazione di espressioni _m64 e a virgola mobile può comportare codice non corretto

Una funzione usa __m64 e float/double tipi. Poiché i registri MMX e a virgola mobile condividono lo stesso spazio del registro fisico (non può essere usato contemporaneamente), l'uso __m64 di tipi e float/double nella stessa funzione può causare un danneggiamento dei dati, probabilmente causando un'eccezione.

Per usare __m64 in modo sicuro tipi e tipi a virgola mobile nella stessa funzione, ogni istruzione che usa uno dei tipi deve essere separata dall'intrinseco _m_empty() (per MMX) o _m_femms() (per 3DNow!).

L'esempio seguente genera l'errore C4730:

// 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
}