下面的代码片段是一个内联的 strcpy ,not ecx 为止是计算源字符串的长度(含NULL),00402646 到 00402651 是以4字节为单位复制,最后3行是把剩下的0-3字节复制过去。

.text:00402632                 mov     edi, offset aSystemrootSyst ; "%SYSTEMROOT%\\system32\\"
.text:00402637                 lea     edx, [ebp+Src]
.text:0040263D                 or      ecx, 0FFFFFFFFh
.text:00402640                 xor     eax, eax
.text:00402642                 repne scasb
.text:00402644                 not     ecx             ; ecx = 源字符串长度含结尾 NULL
.text:00402646                 sub     edi, ecx
.text:00402648                 mov     esi, edi        ; 令 esi 指向 aSystemrootSyst
.text:0040264A                 mov     eax, ecx
.text:0040264C                 mov     edi, edx
.text:0040264E                 shr     ecx, 2
.text:00402651                 rep movsd               ; 先以4字节为单位复制
.text:00402653                 mov     ecx, eax
.text:00402655                 and     ecx, 3
.text:00402658                 rep movsb               ; 复制剩下的 0~3 个字节

rep movsd + rep movsb 内联实现 strcpy相关推荐

  1. repne scasb + rep movsd + rep movsb 内联实现 strcat

    我在前面写了两篇博客分别介绍内联实现 strlen 和 strcpy,这次介绍的 strcat 其实是 strlen + strcpy ,没什么新东西. .text:0040265A lea edi, ...

  2. 汇编语言rep movsd 的使用

    mov esi,offset @s1 mov edi,offset @s2 mov ecx,10 cld rep movsd 1.rep movsd 每次ecx!=0便执行movsd ,然后ecx=e ...

  3. 最牛X的GCC 内联汇编

    导读 正如大家知道的,在C语言中插入汇编语言,其是Linux中使用的基本汇编程序语法.本文将讲解 GCC 提供的内联汇编特性的用途和用法.对于阅读这篇文章,这里只有两个前提要求,很明显,就是 x86 ...

  4. linux gcc 内联汇编入门

    目录 2. 概览(Overview of the whole thing.) 3.GCC汇编语法(GCC Assembler Syntax.) 3.1. 源-目标顺序(Source-Destinati ...

  5. 【转贴】GCC内联汇编基础

    原文作者 Sandeep.S 英文原文 [https://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html] 本文将介绍GCC编译环境下 ...

  6. (转)GCC内联汇编入门

    转自:http://blog.csdn.net/wuyao721/article/details/3573598 原文为GCC-Inline-Assembly-HOWTO,在google上可以找到原文 ...

  7. GCC Inline ASM GCC内联汇编

    GCC 支持在C/C++代码中嵌入汇编代码,这些汇编代码被称作GCC Inline ASM--GCC内联汇编.这是一个非常有用的功能,有利于我们将一些C/C++语法无法表达的指令直接潜入C/C++代码 ...

  8. 汇编语言---GCC内联汇编

    GCC支持在C/C++代码中嵌入汇编代码,这些代码被称作是"GCC Inline ASM"(GCC内联汇编); 一.基本内联汇编(寄存器前一个%) GCC中基本的内联汇编非常易懂, ...

  9. 【reverse】通俗易懂的gcc内联汇编入门+示例:实现花指令

    文章目录 引言 依赖 Hello world Demo1:读取函数若干个字节的数据 效果 Demo2:基础的花指令 效果 如何去除花指令 参考资料 引言 基于Visual Studio的内联汇编教程已 ...

最新文章

  1. DB2 9 使用拓荒(733 检讨)认证指南,第 2 部分: DB2 数据操作(6)
  2. Java笔记14:泛型初探
  3. Javascript的调试利器:Firebug使用详解
  4. 对cookie与session的理解
  5. linux的munit命令,LinuxUnit命令学习(三)
  6. linux使用rename批量修改文件扩展名
  7. 空间站是如何绕地飞行的?张朝阳物理课开播啦
  8. 汇编学习--7.16--端口
  9. mysql 优化 整体思路
  10. [转]MapX 操作总结
  11. ioca0中断 pic单片机_关于PIC单片机的一些经验总结
  12. Neo4j Desktop图数据库导出
  13. 成都信息工程大学校友小程序设计方案
  14. 关于monitor模式
  15. 程序员眼中的中国传统文化-王阳明《传习录》16
  16. python计算日期间的差值,python 计算时间、日期差值类
  17. java 句柄无效_java.io.IOException:句柄无效
  18. bitwise和shift arithmetic
  19. 7-154 置点不动产——认真学习,努力工作买买房子吧
  20. Sigar获取系统信息

热门文章

  1. 机房冷热通道系统整体解决方案
  2. 成功解决RuntimeWarning: divide by zero encountered in double_scalars
  3. CV之OpenCV:OpenCV库涉及概念、常见函数、常用案例、HALCON软件简介之详细攻略
  4. 实例使用pyhanlp创建中文词云
  5. Python常用扩展包
  6. 决策树-特征属性选择划分
  7. ubuntu 安装 CUDA、 cuDNN 的tips
  8. CentOS最小化系统,怎么安装图形界面
  9. IntelliJ IDEA使用说明
  10. python之web开发“三剑客”