Конференция "Прочее" » CodeGear продалось Ebarcadero, вроде как :)
 
  • Тыщ © (08.05.08 14:27) [40]
    Игорь Шевченко ©   (08.05.08 14:24) [39]

    Все модные компиляторы умеют обходиться без лишнего jmp, чем Delphi хуже? :)
  • Rouse_ © (08.05.08 14:30) [41]

    > чем Delphi хуже?

    Как однажды сказал ЮЗ: "все-же плюсы Delphi не в его названии" ;)
  • Игорь Шевченко © (08.05.08 14:31) [42]
    Тыщ ©   (08.05.08 14:27) [40]

    Не скажи - это невыгодно. Так загрузчику в одном месте менять ссылку на импортируемую функцию, а так в сотне мест. Таблица relocation распухает
  • Тыщ © (08.05.08 14:34) [43]
    Игорь Шевченко ©   (08.05.08 14:31) [42]

    Согласен, но это в случае dll. В exe-шниках relocation ни к чему.
  • oxffff © (08.05.08 14:36) [44]

    > Тыщ ©   (08.05.08 14:27) [40]
    > Игорь Шевченко ©   (08.05.08 14:24) [39]
    >
    > Все модные компиляторы умеют обходиться без лишнего jmp,
    >  чем Delphi хуже? :)


    А я бы даже сказал, что это может обернутся преимуществом.
    Единый промежуточный порт,
    например для единого перехвата может используется отладчиком для функции через таблицу импорта.

    ЗЫ. Хотя действительно в Release версии можно убирать. По флагу например.
  • Rouse_ © (08.05.08 14:36) [45]

    > В exe-шниках relocation ни к чему.

    Экзешник тоже может экспортировать функции и может быть подгружен не по стандартному адресу ;)
  • Тыщ © (08.05.08 14:38) [46]
    Rouse_ ©   (08.05.08 14:36) [45]

    Не будем вдаваться в подробности. Relocation не нужен для обычных, ничего не экспортирующих exe-шников, а таких большинство.
  • Тыщ © (08.05.08 14:39) [47]
    oxffff ©   (08.05.08 14:36) [44]

    Ну так можно и dword в таблице импорта поменять, тот же перехват.
  • oxffff © (08.05.08 14:39) [48]

    > Тыщ ©   (08.05.08 14:38) [46]
    > Rouse_ ©   (08.05.08 14:36) [45]
    >
    > Не будем вдаваться в подробности. Relocation не нужен для
    > обычных, ничего не экспортирующих exe-шников, а таких большинство.
    >


    Если таблица импорта съедет, то будешь править все CALL [API].
  • Тыщ © (08.05.08 14:41) [49]
    oxffff ©   (08.05.08 14:39) [48]

    > Если таблица импорта съедет

    Как она может съехать?
  • oxffff © (08.05.08 14:43) [50]

    > Тыщ ©   (08.05.08 14:39) [47]
    > oxffff ©   (08.05.08 14:36) [44]
    >
    > Ну так можно и dword в таблице импорта поменять, тот же
    > перехват.


    Тогда будет перехватываться все.
    А как быть в разными dcu?
    Если нужно перехватывать только вызовы одного DCU.
  • Тыщ © (08.05.08 14:44) [51]
    oxffff ©   (08.05.08 14:43) [50]

    Уж сильно специфический случай.
  • oxffff © (08.05.08 14:45) [52]

    > Тыщ ©   (08.05.08 14:41) [49]
    > oxffff ©   (08.05.08 14:39) [48]
    >
    > > Если таблица импорта съедет
    >
    > Как она может съехать?


    А что есть гарантия, что она всегда на том же месте?
    Секция съедет и таблица вместе с ней.
  • Тыщ © (08.05.08 14:46) [53]
    oxffff ©   (08.05.08 14:43) [50]

    Ах да, выяснилось еще одно - хотелось бы, чтоб вызовы одинаковых API из разных DCU объединялись. А то доходит до того, что kernel32.dll в таблице упомянут по 5 раз...
  • Тыщ © (08.05.08 14:47) [54]
    oxffff ©   (08.05.08 14:45) [52]

    > А что есть гарантия, что она всегда на том же месте?
    > Секция съедет и таблица вместе с ней.

    А если секция кода съедет? Пиши пропало.
  • oxffff © (08.05.08 14:50) [55]

    > А если секция кода съедет? Пиши пропало.


    Почему? Reloc поправит все.
  • Тыщ © (08.05.08 14:53) [56]
    oxffff ©   (08.05.08 14:50) [55]

    Ах, вон ты о чем. Про это было сказано в [43].
    А секции друг относительно друга всегда неподвижны.
  • Anatoly Podgoretsky © (08.05.08 15:21) [57]

    > Как однажды сказал ЮЗ: "все-же плюсы Delphi не в его названии"
    > ;)

    Зато теперь будут смеяться конкуренты, странное для русского слуха имя, я даже представляю как нас теперь будут называть, вместо благородного греческого имени.
  • ^-k2-^ © (08.05.08 15:32) [58]
    http://www.embarcadero.com/company/executive_team.html
    обратите внимание на трудовой путь третьего сверху товарища :)
  • Ins © (08.05.08 15:43) [59]

    > Экзешник тоже может экспортировать функции и может быть
    > подгружен не по стандартному адресу ;)


    Так вроде же виндовый загрузчик все равно игнорирует и таблицу импорта экзешника, и таблицу релокации.
 
Конференция "Прочее" » CodeGear продалось Ebarcadero, вроде как :)
Есть новые Нет новых   [134435   +8][b:0][p:0.001]