64,647
社区成员
发帖
与我相关
我的任务
分享
#include "stdafx.h"
#include <xmmintrin.h>
#include <emmintrin.h>
int _tmain(int argc, _TCHAR* argv[])
{
int a[8];
__m128i *p;
p=(__m128i *)a;
*p=_mm_setzero_si128();
return 0;
}
#include "stdafx.h"
#include <xmmintrin.h>
#include <emmintrin.h>
int _tmain(int argc, _TCHAR* argv[])
{
int a[6];
__m128i *p;
p=(__m128i *)a;
*p=_mm_setzero_si128();
return 0;
}
#数组个数为8,debug模式下的反汇编:
00413520 push ebx
00413521 mov ebx,esp
00413523 sub esp,8
00413526 and esp,0FFFFFFF0h
00413529 add esp,4
0041352C push ebp
0041352D mov ebp,dword ptr [ebx+4]
00413530 mov dword ptr [esp+4],ebp
00413534 mov ebp,esp
00413536 sub esp,118h
0041353C push esi
0041353D push edi
0041353E lea edi,[ebp-118h]
00413544 mov ecx,46h
00413549 mov eax,0CCCCCCCCh
0041354E rep stos dword ptr es:[edi]
00413550 mov eax,dword ptr [___security_cookie (417004h)]
00413555 xor eax,ebp
00413557 mov dword ptr [ebp-4],eax
int a[8];
__m128i *p = NULL;
0041355A mov dword ptr [ebp-34h],0
p=(__m128i *)a;
00413561 lea eax,[ebp-28h] #数组的首地址,28h = 40不是16的倍数,奇怪通不过
00413564 mov dword ptr [ebp-34h],eax
*p =_mm_setzero_si128();
00413567 pxor xmm0,xmm0
0041356B movdqa xmmword ptr [ebp-110h],xmm0
00413573 mov eax,dword ptr [ebp-34h]
00413576 movdqa xmm0,xmmword ptr [ebp-110h]
0041357E movdqa xmmword ptr [eax],xmm0
#数组个数为6,debug模式下反汇编:
00413520 push ebx
00413521 mov ebx,esp
00413523 sub esp,8
00413526 and esp,0FFFFFFF0h
00413529 add esp,4
0041352C push ebp
0041352D mov ebp,dword ptr [ebx+4]
00413530 mov dword ptr [esp+4],ebp
00413534 mov ebp,esp
00413536 sub esp,118h
0041353C push esi
0041353D push edi
0041353E lea edi,[ebp-118h]
00413544 mov ecx,46h
00413549 mov eax,0CCCCCCCCh
0041354E rep stos dword ptr es:[edi]
00413550 mov eax,dword ptr [___security_cookie (417004h)]
00413555 xor eax,ebp
00413557 mov dword ptr [ebp-4],eax
int a[6];
__m128i *p = NULL;
0041355A mov dword ptr [ebp-2Ch],0
p=(__m128i *)a;
00413561 lea eax,[ebp-20h] #数组的首地址,20h = 32 16的倍数,奇怪通过了
00413564 mov dword ptr [ebp-2Ch],eax
*p =_mm_setzero_si128();
00413567 pxor xmm0,xmm0
0041356B movdqa xmmword ptr [ebp-110h],xmm0
00413573 mov eax,dword ptr [ebp-2Ch]
00413576 movdqa xmm0,xmmword ptr [ebp-110h]
0041357E movdqa xmmword ptr [eax],xmm0
#realse 模式下,4个数组元素,优化简化了,一次通过!!!!!
00401000 push ebp
00401001 mov ebp,esp
00401003 and esp,0FFFFFFF0h
00401006 sub esp,10h
int a[4];
__m128i *p = NULL;
p=(__m128i *)a;
*p =_mm_setzero_si128();
00401009 pxor xmm0,xmm0
0040100D movdqa xmmword ptr [esp],xmm0