- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- 石油化工紧急冲淋系统设计规范 SHT 3205-2019.pdf
- 现代企业管理信息系统实践考核真题精髓版.pdf
- 课件中国成人心肌炎临床诊断与治疗指南-2024.pptx VIP
- 《微机原理与接口技术》(徐建平)785-2课件 第9章.pptx VIP
- 原始点医学手册文字版.pdf
- 2024年开封文化艺术职业学院单招综合素质考试试题及答案解析.docx
- ANSI-AWS D1.1-D1.1M 2010 美国钢结构焊接规范 中文版.pdf
- 中医病证诊断疗效标准.pdf VIP
- -高三英语公开课(试卷讲评课)省公开课获奖课件市赛课比赛一等奖课件.pptx
- 2024年青海省西宁市中考道德与法治试题卷(含答案).docx
文档评论(0)