易语言BitBlt汇编版源码

.版本 2 .程序集 窗口程序集_启动窗口 .程序集变量 目标位图, 整数型 .程序集变量 目标位图_hdc, 整数型 .程序集变量 目标位图_句柄, 整数型 .程序集变量 源位图, 整数型 .程序集变量 源位图_hdc, 整数型 .程序集变量 源位图_句柄, 整数型 .子程序 __启动窗口_创建完毕 .局部变量 BITMAPINFO, BITMAPINFO .局部变量 位图句柄, 整数型 .局部变量 图形, GP图形 .局部变量 图像, GP图像 .局部变量 time, 整数型 .局部变量 位图, GP位图 Gdiplus初始化 () 目标位图_hdc = CreateCompatibleDC (0) BITMAPINFO.bmiHeader.biSize = 40 BITMAPINFO.bmiHeader.biBitCount = 32 BITMAPINFO.bmiHeader.biWidth = 1024 BITMAPINFO.bmiHeader.biHeight = 768 BITMAPINFO.bmiHeader.biPlanes = 1 BITMAPINFO.bmiHeader.biCompression = 0 目标位图_句柄 = CreateDIBSection (目标位图_hdc, BITMAPINFO, 0, 目标位图, 0, 0) SelectObject (目标位图_hdc, 目标位图_句柄) 源位图_hdc = CreateCompatibleDC (0) BITMAPINFO.bmiHeader.biSize = 40 BITMAPINFO.bmiHeader.biBitCount = 32 BITMAPINFO.bmiHeader.biWidth = 1024 BITMAPINFO.bmiHeader.biHeight = 768 BITMAPINFO.bmiHeader.biPlanes = 1 BITMAPINFO.bmiHeader.biCompression = 0 源位图_句柄 = CreateDIBSection (源位图_hdc, BITMAPINFO, 0, 源位图, 0, 0) SelectObject (源位图_hdc, 源位图_句柄) 图像.创建自字节集 (#图片1) 图形.创建自DC (源位图_hdc) 图形.画图像缩放 (图像, 0, 0, 1024, 768) 图像.销毁 () 图形.销毁 () time = 取启动时间 () .计次循环首 (10000, ) BitBlt (目标位图_hdc, 0, 0, 1024, 768, 源位图_hdc, 0, 0, #光栅运算_复制) .计次循环尾 () 输出调试文本 (取启动时间 () - time) time = 取启动时间 () .计次循环首 (10000, ) iblit_SSE (目标位图, 4096, 源位图, 4096, 1024, 768, 4, 4096) .计次循环尾 () 输出调试文本 (取启动时间 () - time) .子程序 iblit_SSE, 整数型 .参数 dst, 整数型 .参数 pitch1, 整数型, , 目标图片的宽度*4 .参数 src, 整数型 .参数 pitch2, 整数型, , 源图片的宽度*4 .参数 w, 整数型, , 图片的宽度 .参数 h, 整数型, , 图片的高度 .参数 pixelbyte, 整数型, , 每个像素占用多少字节 .参数 linesize, 整数型 ' push ebp ' mov ebp , esp 置入代码 ({ 81, 139, 69, 28, 131, 125, 32, 1, 139, 77, 36, 15, 68, 77, 24, 137, 69, 28, 139, 69, 12, 41, 200, 137, 69, 252, 139, 69, 20, 41, 200, 137, 69, 20, 137, 200, 193, 248, 6, 137, 69, 36, 137, 200, 83, 193, 248, 2, 131, 225, 3, 131, 224, 15, 86, 137, 69, 32, 87, 137, 77, 12, 139, 117, 16, 139, 125, 8, 15, 24, 70, 64, 15, 24, 71, 64, 15, 24, 6, 15, 24, 7, 139, 69, 36, 193, 224, 3, 139, 93, 32, 139, 85, 12, 252, 15, 24, 6, 15, 24, 70, 64, 15, 24, 134, 128, 0, 0, 0, 15, 24, 134, 192, 0, 0, 0, 137, 193, 247, 217, 141, 52, 198, 141, 60, 199, 133, 192, 116, 99, 15, 24, 132, 206, 0, 1, 0, 0, 15, 24, 132, 206, 128, 0, 0, 0, 15, 111, 4, 206, 15, 111, 76, 206, 8, 15, 111, 84, 206, 16, 15, 111, 92, 206, 24, 15, 111, 100, 206, 32, 15, 111, 108, 206, 40, 15, 111, 116, 206, 48, 15, 111, 124, 206, 56, 15, 231, 4, 207, 15, 231, 76, 207, 8, 15, 231, 84, 207, 16, 15, 231, 92, 207, 24, 15, 231, 100, 207, 32, 15, 231, 108, 207, 40, 15, 231, 116, 207, 48, 15, 231, 124, 207, 56, 131, 193, 8, 117, 157, 15, 24, 6, 137, 217, 243, 165, 137, 209, 243, 164, 3, 125, 252, 3, 117, 20, 15, 24, 6, 255, 77, 28, 15, 133, 93, 255, 255, 255, 15, 174, 248, 15, 119, 95, 94, 49, 192, 91, 137, 236, 93, 194, 32, 0 }) 返回 (0) ' push ecx ' mov eax , dword [ebp+1Ch] ' cmp dword [ebp+20h] , 00000001h ' mov ecx , dword [ebp+24h] ' cmove ecx , dword [ebp+18h] ' mov dword [ebp+1Ch] , eax ' mov eax , dword [ebp+0Ch] ' sub eax , ecx ' mov dword [ebp-04h] , eax ' mov eax , dword [ebp+14h] ' sub eax , ecx ' mov dword [ebp+14h] , eax ' mov eax , ecx ' sar eax , 00000006h ' mov dword [ebp+24h] , eax ' mov eax , ecx ' push ebx ' sar eax , 00000002h ' and ecx , 00000003h ' and eax , 0000000Fh ' push esi ' mov dword [ebp+20h] , eax ' push edi ' mov dword [ebp+0Ch] , ecx ' mov esi , dword [ebp+10h] ' mov edi , dword [ebp+08h] ' prefetchNTA byte [esi+00000040h] ' prefetchNTA byte [edi+00000040h] ' prefetchNTA byte [esi] ' prefetchNTA byte [edi] ' mov eax , dword [ebp+24h] ' shl eax , 00000003h ' mov ebx , dword [ebp+20h] ' mov edx , dword [ebp+0Ch] ' cld ' c: prefetchNTA byte [esi] ' prefetchNTA byte [esi+00000040h] ' prefetchNTA byte [esi+00000080h] ' prefetchNTA byte [esi+000000C0h] ' mov ecx , eax ' neg ecx ' lea esi , dword [esi+eax*8] ' lea edi , dword [edi+eax*8] ' test eax , eax ' je a ' b: prefetchNTA byte [esi+ecx*8+00000100h] ' prefetchNTA byte [esi+ecx*8+00000080h] ' movq mm0 , qword [esi+ecx*8] ' movq mm1 , qword [esi+ecx*8+08h] ' movq mm2 , qword [esi+ecx*8+10h] ' movq mm3 , qword [esi+ecx*8+18h] ' movq mm4 , qword [esi+ecx*8+20h] ' movq mm5 , qword [esi+ecx*8+28h] ' movq mm6 , qword [esi+ecx*8+30h] ' movq mm7 , qword [esi+ecx*8+38h] ' movntq qword [edi+ecx*8] , mm0 ' movntq qword [edi+ecx*8+08h] , mm1 ' movntq qword [edi+ecx*8+10h] , mm2 ' movntq qword [edi+ecx*8+18h] , mm3 ' movntq qword [edi+ecx*8+20h] , mm4 ' movntq qword [edi+ecx*8+28h] , mm5 ' movntq qword [edi+ecx*8+30h] , mm6 ' movntq qword [edi+ecx*8+38h] , mm7 ' add ecx , 00000008h ' jne b ' a: prefetchNTA byte [esi] ' mov ecx , ebx ' rep movsd ' mov ecx , edx ' rep movsb ' add edi , dword [ebp-04h] ' add esi , dword [ebp+14h] ' prefetchNTA byte [esi] ' dec dword [ebp+1Ch] ' jne c ' sfence ' emms ' pop edi ' pop esi ' xor eax , eax ' pop ebx ' mov esp , ebp ' pop ebp ' retn 0020h
相关文件下载地址
©下载资源版权归作者所有;本站所有资源均来源于网络,仅供学习使用,请支持正版!

易语言BitBlt汇编版源码》有0个想法

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注