Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
'main': het combineren van _m64- en drijvendekomma-expressies kan leiden tot onjuiste code
Opmerkingen
Een functie maakt gebruik van __m64 en float/double typen. Omdat de MMX- en drijvendekommaregisters dezelfde fysieke registerruimte delen (niet tegelijkertijd kunnen worden gebruikt), kan het gebruik __m64 en float/double typen in dezelfde functie leiden tot beschadiging van gegevens, wat mogelijk een uitzondering veroorzaakt.
Als u typen en typen drijvende komma in dezelfde functie veilig wilt gebruiken __m64 , moet elke instructie die gebruikmaakt van een van de typen worden gescheiden door de _m_empty() (voor MMX) of _m_femms() (voor 3DNow!) intrinsiek.
Example
In het volgende voorbeeld wordt C4730 gegenereerd:
// 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
}