Фрагмент Asm из разобранной программы - PullRequest
1 голос
/ 04 ноября 2011

Может ли кто-нибудь объяснить значение следующего кода, который я нашел в разобранной функции?

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

Мне кажется, что память, на которую указывают eax и eax + 4, будет перезаписана с теми же значениямикоторые хранились в тех же местах памяти до выполнения фрагмента кода ... что на самом деле не имеет смысла 0_o.Чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 04 ноября 2011

Да, вы правы, значения в eax и eax + 4 (или ebx + 20x и ebx + 24h) читаются и записываются без изменений. Это может быть способ заставить процессор загружать их и некоторые слова в кэш 1-го уровня.

0 голосов
/ 04 ноября 2011
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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...