C++反汇编读书笔记

这篇博客详细分析了C++中的反汇编代码,特别是`rep stosd`循环和`float`指令的应用。文章通过单步调试,解释了如何从EBP+var_40处开始,循环填充内存,并探讨了float数值在内存中的表示,涉及指数和尾数的计算。此外,还提到了在执行过程中的内存和寄存器变化。
摘要由CSDN通过智能技术生成

关于之前的一部分指令,可以参考这篇文章

rep stosd循环:
从lea edi , [EBP+arg_0] 开始,到rep stosd 结束。EDI中存入的是循环操作的起始地址,ECX存入的是循环次数,EAX是循环填入的值。这一段的操作就是从EBP+var_40处开始,循环十次,向下依次填入CCCCCCCC,写入的长度由EAX决定,32位。

1:    #include <stdio.h>
2:    #include <stdlib.h>
3:
4:    int main(int argc, char *argv[])
5:    {
00401010   push        ebp
00401011   mov         ebp,esp
00401013   sub         esp,44h
00401016   push        ebx
00401017   push        esi
00401018   push        edi
00401019   lea         edi,[ebp-44h]
0040101C   mov         ecx,11h
00401021   mov         eax,0CCCCCCCCh
00401026   rep stos    dword ptr [edi]
;这部分之前的指令都是一些初始化的工作
6:        float fFloat = (float)argc;
00401028   fild        dword ptr [ebp+8]
0040102B   fst         dword ptr [ebp-4]
7:        printf(&#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值