当前位置: 网学 > 编程文档 > 汇编语言 > 正文

一段精彩的汇编代码!

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/18
下载{$ArticleTitle}原创论文样式

无意间在Linux内核中发现这么一段汇编代码,更准确地说应该是gcc内联汇编,写得很精彩,拿出来和大家分享一下。

代码是在include/asm-i386/string.h中,是针对i386对memcpy做进一步优化。我们知道,一个简单的memcpy其实和strcpy差不多,区别只是前者检查的是复制的个数,而后者检查的是当前字符是否是’\0′。

而这显然还有很大的优化余地,首先像这种非常常用的库函数是可以用汇编重写来提高速度的。当然了,可移植性是降低了,但我们可以针对每个平台写一套汇编。这样速度上的提升还是蛮乐观的。其次,memcpy显然没必要一个一个字节地复制,其实我们最多每次也就复制4个字节(当然是在i386上),但如果复制数量大的话,这种提升还是很明显的。于是下面的汇编就出来乐~! 

评论如下:

34~36

rep=>重复

movsl=>以long为单位拷贝,从from(%esi)到to(%edi),复制n/4次。别担心,这里是i386。

37~38

恩,用n/4去和n相与。

39

若n/4个4就是全部则完成,跳转到后面的标号,结束。

40

还有剩下的,好,把n%4剩下的一个一个字节地复制。

41~44

这里看不懂的就去学gcc的嵌入汇编语法吧!

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号