当前位置:  技术问答>linux和unix

谁能帮我解释下这段代码

    来源: 互联网  发布时间:2015-12-16

    本文导语:  这就是一段memcpy()的底层实现代码,谁能帮我解释下,特别是这里面为什么操作数只有%4出现了,其他的都不需要么,另外求一份AT&T的汇编资料。 static inline void *__memcpy(void * to , const void * from , size_t n) {  ...

这就是一段memcpy()的底层实现代码,谁能帮我解释下,特别是这里面为什么操作数只有%4出现了,其他的都不需要么,另外求一份AT&T的汇编资料。
static inline void *__memcpy(void * to , const void * from , size_t n)
{
    int d0,d1,d2;
    __asm__ __volatile__(
    "rep ; movslnt"
    "testb $2,%b4nt"
    "je 1fnt"
    "movswn"
    "1:ttestb $1,%b4nt"
    "je 2fnt"
    "movsbn"
    "2:"
    :"=&c"(d0),"&=&D"(d1),"=&S"(d2)
    :"0"(n/4),"q"(n),"1"((long) to),"2"((long) from)
    :"memory");
  return(to);
}

|
因为 
   :"=&c"(d0),"&=&D"(d1),"=&S"(d2)
    :"0"(n/4),"q"(n),"1"((long) to),"2"((long) from)
n/4就到ecx中了,to到edi, from到esi中了。上面的“0”“1”“2”表示输出位置上对应位置的寄存器。所以在代码中就无需赋值了。

上面代码的大概意思是:先按照一个双字一个双字拷贝,再一个字一个字拷贝,最后如果有多出一个字节就拷贝最后一个字节。这样做的原因是:一个双字一个双字的拷贝效率要高

至于资料,可以看看我在实用资料区已解决问题里的一个贴子:
http://community.csdn.net/Expert/topic/4766/4766185.xml?temp=.9432947

    
 
 

您可能感兴趣的文章:

  • C++ STL Bitsets构造函数及成员函数解释及代码示例
  • Java源代码解释器 Beanshell
  • 请高手帮我解释一下这段代码!!!
  • awk '!a[$2]++' 谁能解释一下这行代码
  • 问一句代码,请大家解释一下。
  • 求代码解释
  • 我刚看java,知道它的目标代码是解释执行的,目标执行速度快吗?
  • 谁能给我解释一下这段代码?
  • 读PCI时有段代码不懂,请高手解释一下
  • 谁给解释一下这段代码,立即给分!
  • 帮忙解释下段代码!
  • java demo中的Notepad中的这段代码看不懂,谁给解释一下
  • 怎样让网页输出不解释html代码
  • 下面是mysql5.0源代码中嵌入的一条汇编语句,哪位老大能给解释一下?
  • Linux 2.4.18 中编写的一段代码,请高手帮忙解释一下意思。。。。。。。。。。
  • 有高手能帮我解释一下这段代码的意图吗?谢谢!
  • 请教,我将windows下的带有中文解释的代码在linux打开,全是乱码
  • 谁给解释一下这段代码?
  • 一段20行左右的C代码,设计到一些内核接口结构体和宏,大家帮我解释一下好么?
  • 帮忙解释下这几句汇编代码,各位大虾
  • [源码分析]:能给我解释一下这段代码否?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • CentOS安装Telnet,以root用户登陆Telnet以及CentOS的各种终端解释
  • classpath里的.;到底有什么用?能解释解释吗?
  • 请问java的xml解释器有哪些?怎么能在applet里用这些解释器?
  • 大虾们给我解释解释这个输出问题。这里小弟先谢了。
  • 实在是不能理解,谁能帮我解释解释!
  • 能不能帮我解释解释什么是EJB?
  • 关于"symbol lookup error"问题的诡异现象,高手帮忙解释解释
  • alex 解释器 alexinterpreter
  • 地震解释软件系统 OpendTect
  • 请教高人来解释一下小弟关于poll()函数的疑惑
  • 这个"."怎么解释?
  • 高手帮忙解释
  • 请详细解释javamail里的“收件人类型”的CC,TO,BCC的意义???
  • linux中/dev下都是些什么文件啊?大侠们谁可以帮我解释一下?
  • 多线程的例子。但是不知道为什么看不懂。唉,笨:(各们帮帮忙了给我解释解释
  • 数字电视CA卡解释模块 OSCam
  • markdonw解释器 sundown
  • Brainfuck编译器和JIT解释器 bfc
  • Scheme Lisp 解释器 Subs
  • MQ错误码解释工具 MQRC2
  • AIML解释器 program-o


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3