| Посл.ответ | 
Сообщение | 
 Ранг: 135.2 (ветеран) Активность: 0.07↘0 Статус: Участник 
 
 | 
Создано: 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.02↘0 Статус: Участник 
 
 | 
Создано: 08 октября 2007 22:43   · Личное сообщение ·  #2 
а какой прогой ты асм код проверяеш?
   | Сообщение посчитали полезным:  | 
  Ранг: 990.2 (! ! !), 380thx Активность: 0.68↘0 Статус: Модератор Author of DiE 
 
 | 
Создано: 08 октября 2007 23:07   · Личное сообщение ·  #3 
да ида это, по листингу видно   
alexey_k
а фиг его знает почему так, посмотри в отладчике, просто может нееверно отдиззасмила...
 ----- [nice coder and reverser]  | Сообщение посчитали полезным:  | 
  Ранг: 81.2 (постоянный) Активность: 0.04↘0 Статус: Участник 
 
 | 
Создано: 09 октября 2007 00:19   · Личное сообщение ·  #4 
а может просто нефиг делать   
  | Сообщение посчитали полезным:  | 
 Ранг: 253.9 (наставник) Активность: 0.13↘0 Статус: Участник 
 
 | 
Создано: 09 октября 2007 00:21   · Личное сообщение ·  #5 
в листингах аффтара нет опкодов... а жаль...
 ----- MicroSoft? Is it some kind of a toilet paper?  | Сообщение посчитали полезным:  | 
 Ранг: 34.1 (посетитель) Активность: 0.02↘0 Статус: Участник 
 
 | 
Создано: 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.02↘0 Статус: Участник 
 
 | 
Создано: 09 октября 2007 01:07   · Личное сообщение ·  #7 
да неправильно дизасемблит
 008BC0 90 imul esi,
 вот твой ноп
   | Сообщение посчитали полезным:  | 
 Ранг: 63.8 (постоянный), 2thx Активность: 0.03↘0 Статус: Участник 
 
 | 
Создано: 09 октября 2007 03:17 · Поправил: drin   · Личное сообщение ·  #8 
Crazy_Death пишет:
 да неправильно дизасемблит
 008BC090 imul esi,  
да-да, его даже здесь, в первом листинге, видно: .text:00459769 imul esi, [ecx+esi+0],  90C08B00h
   | Сообщение посчитали полезным:   | 
  Ранг: 116.6 (ветеран), 8thx Активность: 0.05↘0 Статус: Участник 
 
 | 
Создано: 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.07↘0 Статус: Участник 
 
 | 
Создано: 09 октября 2007 08:18   · Личное сообщение ·  #10 
посиб за разъяснения! тема закрыта.
   | Сообщение посчитали полезным:  |