Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
'principal' : misturar expressões _m64 e de ponto flutuante pode resultar em código incorreto
Observações
Uma função usa __m64 e float/double tipos. Como os registradores MMX e de ponto flutuante compartilham o mesmo espaço de registro físico (não podem ser usados simultaneamente), usar __m64 e float/double digitar a mesma função pode resultar em corrupção de dados, possivelmente causando uma exceção.
Para usar __m64 com segurança tipos e tipos de ponto flutuante na mesma função, cada instrução que usa um dos tipos deve ser separada pelo _m_empty() (para MMX) ou _m_femms() (para 3DNow!) intrínseco.
Example
O exemplo a seguir gera 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
}