Показать сообщение отдельно
  #4  
Старый 19.11.2015, 00:02
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

В коде нового поста используется ebp + X, в старом - ebp - X. В [ebp + 4] по идее вообще адрес возврата, а туда записывается eax?. Что-то с этим новым кодом не так.
Теперь, почему
Код:
mov edi, [eax+$04]  //получилиSelf.fMemory
? Я не вижу описания используемых классов. Может там и не 4. Вообще в делфи можно к полям обращаться из ассемблера, чтобы он сам посчитал смещения.
Цитата:
MOV EAX,(TRect PTR [EDX]).B.X
MOV EAX,TRect([EDX]).B.X
MOV EAX,TRect[EDX].B.X
MOV EAX,[EDX].TRect.B.X
Обращение по прямому смещению может обернуться плохими последствиями.
Третье. Ты говоришь, что
Цитата:
в ecx Cnt и Pos
В последнем приведенном коде ecx, содержащий Pos, не сохраняется. При этом в асм-коде он благополучно обнуляется и перезаписывается другим числом, а потом делается mul Pos. Это не может работать. Однако интересно, во что в таком случае вообще mul Pos транслируется.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием