警告C4799:函数没有EMMS指令

时间:2017-04-23 08:11:45

标签: c# assembly warnings inline-assembly mmx

我正在尝试创建使用包含C ++代码和内联汇编的dll库的C#应用​​程序。在函数test_MMX中,我想添加两个特定长度的数组。

extern "C" __declspec(dllexport) void __stdcall test_MMX(int *first_array,int *second_array,int length)
{
    __asm
    {
         mov ecx,length;
         mov esi,first_array;
         shr ecx,1;
         mov edi,second_array;
     label:
         movq mm0,QWORD PTR[esi];
         paddd mm0,QWORD PTR[edi];
         add edi,8;
         movq QWORD PTR[esi],mm0;
         add esi,8;
         dec ecx;
         jnz label;
     }
}

运行应用后,它会显示此警告:

  

警告C4799:功能' test_MMX'没有EMMS指令。

当我想以毫秒为单位测量运行此函数C#的时间时,它返回此值:-922337203685477而不是(例如0,0141)...

private Stopwatch time = new Stopwatch();
time.Reset();
time.Start();
test_MMX(first_array, second_array, length);
time.Stop();
TimeSpan interval = time.Elapsed;
return trvanie.TotalMilliseconds;

任何想法如何解决它?

0 个答案:

没有答案