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

.text:0040265A                 lea     edi, [ebp+lpszExeName]
.text:00402660                 lea     edx, [ebp+Src]
.text:00402666                 or      ecx, 0FFFFFFFFh
.text:00402669                 xor     eax, eax
.text:0040266B                 repne scasb
.text:0040266D                 not     ecx             ; 得到 lpszExeName 的长度(含NULL)
.text:0040266F                 sub     edi, ecx
.text:00402671                 mov     esi, edi        ; esi 指向 lpszExeName
.text:00402673                 mov     ebx, ecx
.text:00402675                 mov     edi, edx
.text:00402677                 or      ecx, 0FFFFFFFFh
.text:0040267A                 xor     eax, eax
.text:0040267C                 repne scasb             ; edi 指向复制起点
.text:0040267E                 add     edi, 0FFFFFFFFh
.text:00402681                 mov     ecx, ebx
.text:00402683                 shr     ecx, 2
.text:00402686                 rep movsd
.text:00402688                 mov     ecx, ebx
.text:0040268A                 and     ecx, 3
.text:0040268D                 rep movsb

repne scasb + rep movsd + rep movsb 内联实现 strcat相关推荐

  1. rep movsd + rep movsb 内联实现 strcpy

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

  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. 汇编与C/C++内联嵌入汇编

    汇编语言格式简介 汇编语言的指令格式,目前有两种不同的标准:Windows下的汇编语言基本上都遵循Intel风格的语法,比如:MASM.NASM;而Unix/Linux下的汇编语言基本上都遵循AT&a ...

  4. 最牛X的GCC 内联汇编

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

  5. linux gcc 内联汇编入门

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

  6. GCC Inline ASM GCC内联汇编

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

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

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

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

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

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

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

最新文章

  1. 怎么判断网络回路_收藏|电梯安全回路分析说明及故障判断
  2. xcode 4.5 new feature __ ios6 新特性
  3. 复数混频发射机原理与仿真
  4. Android intent 页面跳转
  5. task2:opencv的python接口图像储存、色彩空间、
  6. social-auth-app-django模块
  7. 方立勋_30天掌握JavaWeb_自己编写jdbc框架、dbutils框架(未完)
  8. python读取大文件的坑_Python读取大文件的坑“与内存占用检测
  9. python核心理念_《Python核心技术第二版》笔记
  10. vue 循环tabs 标签页 组件_Vue render函数实战--实现tabs选项卡组件
  11. 利用dialogArguments进行网页页面传值
  12. AndroidStudio 编译报错 abc_list_selector_disabled_holo_light.9.png
  13. Java多线程系列--【JUC集合08】- LinkedBlockingQueue
  14. 微信小程序连接onenet控制RGB三色灯
  15. 现场快递柜状态采集与控制系统
  16. 阿里巴巴大数据学院落地成都,计划5年培养2000名高端专业人才
  17. 数论--欧几里得和扩展的欧几里得定理
  18. node安装后的设置(node_global和node_cache)
  19. 使用STL给选手打分
  20. (1146, Table 'django.django_session' doesn't exist)

热门文章

  1. 数据中心太废电?为省电费阿里和微软是这么做的....
  2. java opengl_java基于OpenGL ES实现渲染实例
  3. DL之SqueezeNet:SqueezeNet算法的架构详解
  4. ML之NN:利用神经网络的BP算法解决XOR类(异或非)问题(BP solve XOR Problem)
  5. CV之IS:计算机视觉之图像分割(Image Segmentation)/语义分割算法的简介、使用方法、案例应用之详细攻略
  6. 项目管理十大知识领域之项目进度管理
  7. .Net Web开发技术栈
  8. log4j无法显示mybatis sql
  9. 切换debian8系统语言环境
  10. zabbix proxy安装配置