📄 image.c
字号:
add eax,imgw
movd mm5,[eax]
PUNPCKLBW mm5,mm7
add eax,imgw
movd mm6,[eax]
PUNPCKLBW mm6,mm7
add eax,imgw
movd mm7,[eax]
PUNPCKLBW mm7,zero
//转秩
PUNPCKLWD mm4,mm5
PUNPCKLWD mm6,mm7
movq mm5,mm4
PUNPCKLDQ mm4,mm6
PUNPCKHDQ mm5,mm6
movq mm6,mm4
PSLLW mm6,2
paddw mm6,mm4
psubw mm0,mm6
paddw mm0,mm5
pxor mm6,mm6
movq [edi],mm0
add [edi],8
paddw mm0,f16
PSRAW mm0,5
PACKUSWB mm0,mm6
PUNPCKLBW mm0,mm6
movq2dq xmm0,mm0
movq [ebx],mm0
paddw mm0,mm2
paddw mm0,f1
PSRAw mm0,1
movq [ecx],mm0
movdq2q mm0,xmm0
paddw mm0,mm3
paddw mm0,f1
PSRAw mm0,1
movq [edx],mm0
add ebx,8
add ecx,8
add edx,8
//计算第二列
//再读入两列
mov eax,pt1
add eax,5
pxor mm7,mm7
movd mm5,[eax]
PUNPCKLBW mm5,mm7
add eax,imgw
movd mm0,[eax]
PUNPCKLBW mm0,mm7
add eax,imgw
movd mm6,[eax]
PUNPCKLBW mm6,mm7
add eax,imgw
movd mm7,[eax]
PUNPCKLBW mm7,zero
//转秩
PUNPCKLWD mm5,mm0
PUNPCKLWD mm6,mm7
movq mm0,mm5
PUNPCKLDQ mm5,mm6
PUNPCKHDQ mm0,mm6
movq mm6,mm2
PSLLW mm6,2
paddw mm6,mm2
psubw mm1,mm6
movq mm6,mm3
movq mm7,mm3
PSLLW mm6,4
PSLLW mm7,2
paddw mm6,mm7
paddw mm1,mm6
movq mm6,mm4
movq mm7,mm4
PSLLW mm6,4
PSLLW mm7,2
paddw mm6,mm7
paddw mm1,mm6
movq mm6,mm5
PSLLW mm6,2
paddw mm6,mm5
psubw mm1,mm6
paddw mm1,mm0
pxor mm6,mm6
movq [edi],mm1
add [edi],8
paddw mm1,f16
PSRAW mm1,5
PACKUSWB mm1,mm6
PUNPCKLBW mm1,mm6
movq2dq xmm0,mm1
movq [ebx],mm1
paddw mm1,mm3
paddw mm1,f1
PSRAw mm1,1
movq [ecx],mm1
movdq2q mm1,xmm0
paddw mm1,mm4
paddw mm1,f1
PSRAw mm1,1
movq [edx],mm1
add ebx,8
add ecx,8
add edx,8
//计算第三列
//再读入两列
mov eax,pt1
add eax,6
pxor mm7,mm7
movd mm0,[eax]
PUNPCKLBW mm0,mm7
add eax,imgw
movd mm1,[eax]
PUNPCKLBW mm1,mm7
add eax,imgw
movd mm6,[eax]
PUNPCKLBW mm6,mm7
add eax,imgw
movd mm7,[eax]
PUNPCKLBW mm7,zero
//转秩
PUNPCKLWD mm0,mm1
PUNPCKLWD mm6,mm7
movq mm1,mm0
PUNPCKLDQ mm0,mm6
PUNPCKHDQ mm1,mm6
movq mm6,mm3
PSLLW mm6,2
paddw mm6,mm3
psubw mm2,mm6
movq mm6,mm4
movq mm7,mm4
PSLLW mm6,4
PSLLW mm7,2
paddw mm6,mm7
paddw mm2,mm6
movq mm6,mm5
movq mm7,mm5
PSLLW mm6,4
PSLLW mm7,2
paddw mm6,mm7
paddw mm2,mm6
movq mm6,mm0
PSLLW mm6,2
paddw mm6,mm0
psubw mm2,mm6
paddw mm2,mm1
pxor mm6,mm6
movq [edi],mm2
add [edi],8
paddw mm2,f16
PSRAW mm2,5
PACKUSWB mm2,mm6
PUNPCKLBW mm2,mm6
movq2dq xmm0,mm2
movq [ebx],mm2
paddw mm2,mm4
paddw mm2,f1
PSRAw mm2,1
movq [ecx],mm2
movdq2q mm2,xmm0
paddw mm2,mm5
paddw mm2,f1
PSRAw mm2,1
movq [edx],mm2
add ebx,8
add ecx,8
add edx,8
//计算第四列
//再读入两列
mov eax,pt1
add eax,7
pxor mm7,mm7
movd mm1,[eax]
PUNPCKLBW mm1,mm7
add eax,imgw
movd mm2,[eax]
PUNPCKLBW mm2,mm7
add eax,imgw
movd mm6,[eax]
PUNPCKLBW mm6,mm7
add eax,imgw
movd mm7,[eax]
PUNPCKLBW mm7,zero
//转秩
PUNPCKLWD mm1,mm2
PUNPCKLWD mm6,mm7
movq mm2,mm1
PUNPCKLDQ mm1,mm6
PUNPCKHDQ mm2,mm6
movq mm6,mm4
PSLLW mm6,2
paddw mm6,mm4
psubw mm3,mm6
movq mm6,mm5
movq mm7,mm5
PSLLW mm6,4
PSLLW mm7,2
paddw mm6,mm7
paddw mm3,mm6
movq mm6,mm0
movq mm7,mm0
PSLLW mm6,4
PSLLW mm7,2
paddw mm6,mm7
paddw mm3,mm6
movq mm6,mm1
PSLLW mm6,2
paddw mm6,mm1
psubw mm3,mm6
paddw mm3,mm2
pxor mm6,mm6
movq [edi],mm3
paddw mm3,f16
PSRAW mm3,5
PACKUSWB mm3,mm6
PUNPCKLBW mm3,mm6
movq2dq xmm0,mm3
movq [ebx],mm3
paddw mm3,mm5
paddw mm3,f1
PSRAw mm3,1
movq [ecx],mm3
movdq2q mm3,xmm0
paddw mm3,mm0
paddw mm3,f1
PSRAw mm3,1
movq [edx],mm3
emms
}
}
static void calcdhn(byte *pt1,_int16*pt2,_int16*pt3,_int16*pt4,_int16 *pt5)
{
static _int64 zero=0;
static _int64 f16=0x0010001000100010;
static _int64 f1=0x0001000100010001;
int imgw=img->width+32;
_asm
{
mov eax,pt1
mov ebx,pt2
mov ecx,pt3
mov edx,pt4
mov edi,pt5
//计算第一行
pxor mm6,mm6
movq mm0,[eax]
PUNPCKLBW mm0,mm6
add eax,imgw
movq mm1,[eax]
PUNPCKLBW mm1,mm6
add eax,imgw
movq mm2,[eax]
PUNPCKLBW mm2,mm6
add eax,imgw
movq mm3,[eax]
PUNPCKLBW mm3,mm6
add eax,imgw
movq mm4,[eax]
PUNPCKLBW mm4,mm6
add eax,imgw
movq mm5,[eax]
PUNPCKLBW mm5,mm6
movq mm6,mm1
PSLLW mm6,2
paddw mm6,mm1
psubw mm0,mm6
movq mm6,mm2
movq mm7,mm2
PSLLW mm6,4
PSLLW mm7,2
paddw mm6,mm7
paddw mm0,mm6
movq mm6,mm3
movq mm7,mm3
PSLLW mm6,4
PSLLW mm7,2
paddw mm6,mm7
paddw mm0,mm6
movq mm6,mm4
PSLLW mm6,2
paddw mm6,mm4
psubw mm0,mm6
paddw mm0,mm5
pxor mm6,mm6
movq [edi],mm0
paddw mm0,f16
PSRAW mm0,5
PACKUSWB mm0,mm6
PUNPCKLBW mm0,mm6
movq2dq xmm0,mm0
movq [ebx],mm0
paddw mm0,mm2
paddw mm0,f1
PSRAw mm0,1
movq [ecx],mm0
movdq2q mm0,xmm0
paddw mm0,mm3
paddw mm0,f1
PSRAw mm0,1
movq [edx],mm0
add ebx,8
add ecx,8
add edx,8
add edi,8
//计算第二行
add eax,imgw
movq mm0,[eax]
PUNPCKLBW mm0,mm6
movq mm6,mm2
PSLLW mm6,2
paddw mm6,mm2
psubw mm1,mm6
movq mm6,mm3
movq mm7,mm3
PSLLW mm6,4
PSLLW mm7,2
paddw mm6,mm7
paddw mm1,mm6
movq mm6,mm4
movq mm7,mm4
PSLLW mm6,4
PSLLW mm7,2
paddw mm6,mm7
paddw mm1,mm6
movq mm6,mm5
PSLLW mm6,2
paddw mm6,mm5
psubw mm1,mm6
paddw mm1,mm0
pxor mm6,mm6
movq [edi],mm1
paddw mm1,f16
PSRAW mm1,5
PACKUSWB mm1,mm6
PUNPCKLBW mm1,mm6
movq2dq xmm0,mm1
movq [ebx],mm1
paddw mm1,mm3
paddw mm1,f1
PSRAw mm1,1
movq [ecx],mm1
movdq2q mm1,xmm0
paddw mm1,mm4
paddw mm1,f1
PSRAw mm1,1
movq [edx],mm1
add ebx,8
add ecx,8
add edx,8
add edi,8
//计算第三行
add eax,imgw
movq mm1,[eax]
PUNPCKLBW mm1,mm6
movq mm6,mm3
PSLLW mm6,2
paddw mm6,mm3
psubw mm2,mm6
movq mm6,mm4
movq mm7,mm4
PSLLW mm6,4
PSLLW mm7,2
paddw mm6,mm7
paddw mm2,mm6
movq mm6,mm5
movq mm7,mm5
PSLLW mm6,4
PSLLW mm7,2
paddw mm6,mm7
paddw mm2,mm6
movq mm6,mm0
PSLLW mm6,2
paddw mm6,mm0
psubw mm2,mm6
paddw mm2,mm1
pxor mm6,mm6
movq [edi],mm2
paddw mm2,f16
PSRAW mm2,5
PACKUSWB mm2,mm6
PUNPCKLBW mm2,mm6
movq2dq xmm0,mm2
movq [ebx],mm2
paddw mm2,mm4
paddw mm2,f1
PSRAw mm2,1
movq [ecx],mm2
movdq2q mm2,xmm0
paddw mm2,mm5
paddw mm2,f1
PSRAw mm2,1
movq [edx],mm2
add ebx,8
add ecx,8
add edx,8
add edi,8
//计算第四行
add eax,imgw
movq mm2,[eax]
PUNPCKLBW mm2,mm6
movq mm6,mm4
PSLLW mm6,2
paddw mm6,mm4
psubw mm3,mm6
movq mm6,mm5
movq mm7,mm5
PSLLW mm6,4
PSLLW mm7,2
paddw mm6,mm7
paddw mm3,mm6
movq mm6,mm0
movq mm7,mm0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -