快速關於該問題的答案: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