我正在尝试创建使用包含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;
任何想法如何解决它?