В коде нового поста используется 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, содержащий Pos, не сохраняется. При этом в асм-коде он благополучно обнуляется и перезаписывается другим числом, а потом делается mul Pos. Это не может работать. Однако интересно, во что в таком случае вообще mul Pos транслируется.