网站大量收购独家精品文档,联系QQ:2885784924

微机原理-第5版-周荷琴-第14章.pptxVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

《微型计算机原理与接口技术》

第5版第14章SIMD指令和程序设计方法

14.4利用SIMD指令进行程序设计

对数据和变量进行定义时,首先要申明数据的类型,说明参加运算的数是定点数还是浮点数。采用汇编语言和C语言混合编程的方法设计程序,设定程序的运行环境为VisualC++.NET。01下面给出用SIMD指令编写的3个程序设计实例。如果是浮点数,还要说明是否是对齐的浮点数,是单精度浮点数还是双精度浮点数,它们是如何存放的等。02

已知:dy=0.2345要求:编程调整数据结构,使xmm4寄存器中的值为:1-dy,dy,1-dy,dy并把调整结果显示在屏幕上。程序运行后应在CRT上显示:xmm4中的值为:0.76550,0.23450,0.76550,0.23450例14.34编程调整数据结构

intmain() //主程序,用C语言编写{declspec(align(16))floatf[4]; //声明16位对齐的浮点数数组,有4个元素floatmyone=1.0; //定义浮点数myonefloatdy=0.2345; //定义浮点数dy_asm //在C++语言中插入汇编语言程序{movdxmm1,myone //xmm1=0,0,0,1,16位浮点数送低位movdxmm4,dy //xmm4=0,0,0,dysubpsxmm1,xmm4//xmm1=0,0,0,1-dy标量相减unpcklpsxmm4,xmm1 //xmm4=0,0,1-dy,dy低位打散交织存放movapsxmm1,xmm4//xmm1=0,0,1-dy,dymovlhpsxmm4,xmm1 //xmm4=1-dy,dy,1-dy,dy源低送目的高movapsf,xmm4 //f为数组地址}printf(“xmm4中的值为:%f,%f,%f,%f\n”,f[3],f[2],f[1],f[0]);} //打印寄存器xmm4中4个浮点数的值

例14.35访问存储器的例子定义3个数组a,b,c,每个数组存放4个数据。要求:a数组存放数据0,1,2,3;b数组的数应是a的10倍;c数组的数为a、b数组之和。然后将各数组中的数依次放入内存单元,并将c数组的值打印出来。程序运行结果为在CRT上显示:0,11,22,33voidaccessMem() //定义函数{_declspec(align(16))floata[4]; //声明16位对齐的4个浮点数组成的a数组_declspec(align(16))floatb[4]; //声明b数组_declspec(align(16))floatc[4]; //声明c数组for(intI=0;I4;I++)//初始化a[4]和b[4]的内容{a[I]=I;b[I]=10*I;}

_asm //用汇编语言编程求数组c的值{pushebxleaecx,a[0] //将数组a的初始地址读入ecxleaedx,b[0] //将数组b的初始地址读入edxleaebx,c[0] //将数组c的初始地址读入ebxmovapsxmm0,[ecx]//将[ecx]指定的a数组内容读入xmm0movapsxmm1,[edx]//将[edx]指定的b数组内容读入xmm1addpsxmm0,xmm1//a数组与b数组内容相加,存入xmm0movaps[ebx],xmm0//c数组存入[ebx]所指定的内存单元popebx}printf(C数组的值为:%f,%f,%f,%f\n,c[0],c[1],c[2],c[3]);} //打印c数组内容in

文档评论(0)

SYWL2019 + 关注
官方认证
文档贡献者

权威、专业、丰富

认证主体四川尚阅网络信息科技有限公司
IP属地四川
统一社会信用代码/组织机构代码
91510100MA6716HC2Y

1亿VIP精品文档

相关文档