欢迎来到天天文库
浏览记录
ID:37862524
大小:1.24 MB
页数:10页
时间:2019-06-01
《MMX_实验报告西交大》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、计算机组成原理实验报告MMX实现图片的淡出淡入学号:姓名:班级:软件班实验日期:2013年12月19日一、实验目的利用MMX作为核心技术来实现图像的淡入淡出,并与不使用MMX的普通淡入淡出进行比较,以此锻炼用混合语言编程的能力。二、实验分析MMX是MultiMediasXtensions(多媒体扩展)的缩写,是第六代CPU芯片的重要特点。MMX技术是以一种SIMD(单指令多数据)样式来处理数据,可以一次在多个数据元素上同时完成加、乘等的运算。MMX主要是为多媒体程序设计而设置的,由于视频和音频数据一般是由8位或16位
2、这样小的数据类型构成的大的阵列(例如在图形或图像中,每一屏都是由像素点所组成,每个像素或是每个像素的每个颜色分量—红、绿、蓝—都由8位数据表示),为对这些长度的数据提供并行操作的方便,MMX中定义了3种新的数据类型,每种数据类型都是64位长,由多个小的整数字段所组成:1.压缩字节型:8个字节打包成一个74位长的数据;2.压缩字型:4个字打包成一个64位长的数据;3.压缩双字型:2个32位的双字打包成一个64位长的数据。一般的影视节目常有淡出、淡入效果。即一屏图像逐渐溶解成另一屏图像。两个图像以一种加权平均组合:Res
3、ult_pixel=A_pixel×fade+B_pixel×(1-fade)等价的公式为Result_pixel=(A_pixel-B_pixel)×fade+B_pixel其中fade为渐变因子,当fade从1到0逐渐改变时,就可产生渐变效果。对A、B两图像的每个像素位置完成上述计算,当fade值由1逐渐变为0(可按相应的8位整数组分成255阶),则产生一系列的图像帧,即实现了由A图像淡化到B图像的效果。三、实验过程本实验中在visualstudio2010平台上编写应用程序,通过比较采用C++内联汇编方式调用的
4、MMX指令和调用API对图片像素逐个处理方法的处理效率,学习体会提高数据处理速度的方法。主要代码如下:(1)使用MMX技术的代码如下intMmx(LPBYTEPicture1,LPBYTEPicture2,LPBYTEPicture,intintWidth,intintHeight,intRGB_Bit,inti){intx,y;LPDWORDtemp1,temp2,temp;intfade_Rate=i*128;//将fade值扩展为16位,以适应MMX的16位运算WORDfade1[4],fade2[4];fad
5、e1[0]=fade1[1]=fade1[2]=fade1[3]=32767-fade_Rate;//16位带符号数最大为32767fade2[0]=fade2[1]=fade2[2]=fade2[3]=fade_Rate;for(y=0;y6、h*RGB_Bit/8*y);for(x=0;x7、bwmm0,mm7punpcklbwmm1,mm7//将字节解紧缩到16位pmulhwmm0,mm2//乘以阶值(a*fade)pmulhwmm1,mm3//(b*(1-fade))paddwmm0,mm1packuswbmm0,mm7//紧缩16位到字节movd[edi],mm0}temp1++;temp2++;temp++;}}_asmEMMSreturn0;}(2)未使用MMX技术的代码如下intMmx(LPBYTEPicture1,LPBYTEPicture2,LPBYTEPicture,intintWidt8、h,intintHeight,intRGB_Bit,inti){intx,y;LPBYTEtemp1,temp2,temp;BYTEfade_Rate=(BYTE)i;//将fade值扩展为16位,以适应MMX的16位运算BYTEfade1,fade2;fade1=255-fade_Rate;//16位带符号数最大为32767fade2=fad
6、h*RGB_Bit/8*y);for(x=0;x7、bwmm0,mm7punpcklbwmm1,mm7//将字节解紧缩到16位pmulhwmm0,mm2//乘以阶值(a*fade)pmulhwmm1,mm3//(b*(1-fade))paddwmm0,mm1packuswbmm0,mm7//紧缩16位到字节movd[edi],mm0}temp1++;temp2++;temp++;}}_asmEMMSreturn0;}(2)未使用MMX技术的代码如下intMmx(LPBYTEPicture1,LPBYTEPicture2,LPBYTEPicture,intintWidt8、h,intintHeight,intRGB_Bit,inti){intx,y;LPBYTEtemp1,temp2,temp;BYTEfade_Rate=(BYTE)i;//将fade值扩展为16位,以适应MMX的16位运算BYTEfade1,fade2;fade1=255-fade_Rate;//16位带符号数最大为32767fade2=fad
7、bwmm0,mm7punpcklbwmm1,mm7//将字节解紧缩到16位pmulhwmm0,mm2//乘以阶值(a*fade)pmulhwmm1,mm3//(b*(1-fade))paddwmm0,mm1packuswbmm0,mm7//紧缩16位到字节movd[edi],mm0}temp1++;temp2++;temp++;}}_asmEMMSreturn0;}(2)未使用MMX技术的代码如下intMmx(LPBYTEPicture1,LPBYTEPicture2,LPBYTEPicture,intintWidt
8、h,intintHeight,intRGB_Bit,inti){intx,y;LPBYTEtemp1,temp2,temp;BYTEfade_Rate=(BYTE)i;//将fade值扩展为16位,以适应MMX的16位运算BYTEfade1,fade2;fade1=255-fade_Rate;//16位带符号数最大为32767fade2=fad
此文档下载收益归作者所有