关于之前的一部分指令,可以参考这篇文章
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(&#