Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
"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
}