2011-11-04 95 views
1

任何人都可以解釋我在反彙編函數中找到的以下代碼的含義嗎?Asm從反彙編程序中摘錄

mov  eax, [ebx+20h] 
mov  ecx, [eax] 
mov  [eax], ecx 
mov  ecx, [eax+4] 
mov  [eax+4], ecx 

對我來說似乎是通過EAX和EAX + 4是要與代碼段的執行......這沒有按」之前被存儲在相同的存儲位置相同的值覆蓋指向的內存真的有道理0_o。我錯過了什麼?

+2

多年來我沒有使用X86 ASM,但似乎是這樣,這段代碼根本沒有什麼意義..你在哪裏找到它? – Radu

回答

0
mov eax,[ebx+20h] ; move the memory constant at address [ebx] with the offset of 32 bits 

mov ecx,[eax] ; move the memory constant at address eax with no offset 


mov [eax],ecx ; mov the address at ecx to value of eax 

mov ecx,[eax+4] ; mov teh value of eax with offset 4 to ecx 

mov [eax+4],ecx ; move the adress at ecx to the value of eax with offset 4 

[EAX]像* EAX用C

+0

只看'mov eax,[ebx + 20h]',然後是'mov ecx,[eax]'。我認爲這是'mov destination,source'。 – 2011-11-04 14:12:18

+0

當然是 – Andro

+0

嗯。我想知道我誤讀了什麼:P – 2011-11-04 18:28:38

0

是啊,你說得對,在eaxeax + 4(或ebx + 20xebx + 24h)值被讀出並沒有變化寫入。這可能是迫使CPU將它們加載並將其中的一些詞帶入其第一級緩存的一種方式。

+0

也可能是由於缺乏優化。 – Andro