有人可以解释我在反汇编函数中找到的以下代码的含义吗?
mov eax, [ebx+20h]
mov ecx, [eax]
mov [eax], ecx
mov ecx, [eax+4]
mov [eax+4], ecx
对我来说,似乎eax和eax + 4所指向的内存将被覆盖在执行代码片段之前存储在相同内存位置的相同值...这实际上没有意义0_o。我错过了什么?
答案 0 :(得分: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] in like * eax in C
答案 1 :(得分:0)
是的,你是对的,eax
和eax + 4
(或ebx + 20x
和ebx + 24h
)的值无需更改即可读写。这可能是一种强制CPU将它们加载到第一级缓存中的方法。