快速关于该问题的答案:Purpose of ESI & EDI registers?为什么会发生这种C代码产生这种大会
srcp [srcidx++] = argv [j]; C code translates too
8B550C mov edx,[ebp+0C]
8B0C9A mov ecx,[edx+4*ebx]
894CBDAC mov [ebp+4*edi-54],ecx
47 inc edi
我已经采取了组装类和知道的基本知识,而不是寻找什么mov
手段,但我m主要是作为+0C
,+4*ebx
和ebp+4*edi-54
陈述的用途而混淆。他在帖子中解释,但我仍然不理解。
ebp+12
有argv
,但为什么它增加了12?
ebx
是j
,但为什么这个乘以4并加到ebp
?
他说:“第三个指令使用edi
乘以4,并增加了ebp
通过0x54
(的srcp
位置)偏移”;为什么它必须乘以4? 另外他说加了偏移量;为什么它在代码中是-54
而不是+54
?
只是有点困惑。
我认为乘以4是因为argv的类型是4字节的一个(例如int)。 – seleciii44
正是你的问题解释[这里](http://stackoverflow.com/a/1858322/1632887) – seleciii44