Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
"main" : blandning av _m64- och flyttalsuttryck kan resultera i felaktig kod
Anmärkningar
En funktion använder __m64 och float/double typer. Eftersom MMX- och flyttalsregister delar samma fysiska registerutrymme (kan inte användas samtidigt), kan användning __m64 och float/double typer i samma funktion leda till att data skadas, vilket kan orsaka ett undantag.
För att på ett säkert sätt använda __m64 typer och flyttalstyper i samma funktion bör varje instruktion som använder en av typerna avgränsas med _m_empty() (för MMX) eller _m_femms() (för 3DNow!) inbyggda.
Example
I följande exempel genereras 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
}