Сейчас на форуме: rtsgreg1989, zds, _MBK_ (+5 невидимых)

 eXeL@B —› Основной форум —› Непонятки в работе компилятора Delphi
Посл.ответ Сообщение

Ранг: 135.2 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 08 октября 2007 21:57
· Личное сообщение · #1

Обнаружил такую вещь:

код на Delphi:


procedure MyProc;
asm
nop
nop
nop
ret
end;


сгенерированный код:

.text:00459769 loc_459769: ; DATA XREF: sub_459778+15o
.text:00459769 imul esi, [ecx+esi+0], 90C08B00h
.text:00459771 nop
.text:00459772 nop
.text:00459773 retn


Вопрос вот в чём, почему первую иструкцию компиллер заменил на imul esi, [ecx+esi+0], 90C08B00h, и зачем это вообще нужно , а вот если первая инструкция не NOP, то всё компиллится нормально как есть.



Ранг: 30.1 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 08 октября 2007 22:43
· Личное сообщение · #2

а какой прогой ты асм код проверяеш?




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 08 октября 2007 23:07
· Личное сообщение · #3

да ида это, по листингу видно

alexey_k
а фиг его знает почему так, посмотри в отладчике, просто может нееверно отдиззасмила...

-----
[nice coder and reverser]





Ранг: 81.2 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 09 октября 2007 00:19
· Личное сообщение · #4

а может просто нефиг делать



Ранг: 253.9 (наставник)
Активность: 0.130
Статус: Участник

Создано: 09 октября 2007 00:21
· Личное сообщение · #5

в листингах аффтара нет опкодов... а жаль...

-----
MicroSoft? Is it some kind of a toilet paper?




Ранг: 34.1 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 09 октября 2007 00:57
· Личное сообщение · #6

Листинг из Оли:
00454DD1 . 697431 00 008BC090 imul esi,dword ptr ds:[ecx+esi],90C08B00
00454DD9 . 90 nop
00454DDA . 90 nop

Компилит всё нормально, просто дизасмит косяково, тот же DeDe всё правильно вывел:
_http://arzbot.fr1ka.net/mr/dir=Graph/&file=dizasm.png



Ранг: 30.1 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 09 октября 2007 01:07
· Личное сообщение · #7

да неправильно дизасемблит
008BC090 imul esi,

вот твой ноп



Ранг: 63.8 (постоянный), 2thx
Активность: 0.030
Статус: Участник

Создано: 09 октября 2007 03:17 · Поправил: drin
· Личное сообщение · #8

Crazy_Death пишет:
да неправильно дизасемблит
008BC090 imul esi,

да-да, его даже здесь, в первом листинге, видно: .text:00459769 imul esi, [ecx+esi+0], 90C08B00h




Ранг: 116.6 (ветеран), 8thx
Активность: 0.050
Статус: Участник

Создано: 09 октября 2007 05:36 · Поправил: dermatolog
· Личное сообщение · #9

2 alexey_k:

00454DD1: db 69,74,31,00,00,8B,C0
00454DD8: nop
00454DD9: nop
00454DDA: nop
00454DDB: ret


По адресам 00454DСC..00454DD7 у тебя лежат данные - это хорошо видно из листинга Olly. Твоя процедура начинается по адресу 00454DD8, так что не морочь всем голову по поводу компилятора Delphi.

P.S. db 55,6E,69,74,31 = 'Unit1'



Ранг: 135.2 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 09 октября 2007 08:18
· Личное сообщение · #10

посиб за разъяснения! тема закрыта.


 eXeL@B —› Основной форум —› Непонятки в работе компилятора Delphi
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати