|
这是用VC.NET中的MMX指令写的图像处理的程序:
__m64 CImg8Operations::Get_m64(__int64 n)
{
union __m64__m64
{
__m64 m;
__int64 i;
} mi;
mi.i = n;
return mi.m;
}
下面的程序要调用上面的程序:
void CImg8Operations::InvertImageC_MMX(
BYTE* pSource,
BYTE* pDest,
int nNumberOfPixels)
{
__int64 i = 0;
i = ~i; // 0xffffffffffffffff
// 8 pixels are processed in one loop
int nLoop = nNumberOfPixels/8;
__m64* pIn = (__m64*) pSource; // input pointer
__m64* pOut = (__m64*) pDest; // output pointer
__m64 tmp; // work variable
_mm_empty(); // emms
__m64 n1 = Get_m64(i);
for ( int i = 0; i < nLoop; i++ )
{
tmp = _mm_subs_pu8 (n1 , *pIn); // Unsigned subtraction with saturation.
// tmp = n1 - *pIn for each byte
*pOut = tmp;
pIn++; // next 8 pixels
pOut++;
}
_mm_empty(); // emms
}
我的问题是:
__m64 CImg8Operations::Get_m64(__int64 n)函数是怎么传递数值的? |
|