кто подскажет почему при компиляции delphi проекта EXE всегда получаются разные, даже если ничего не менять в самом проекте?
т.е. на одном компе создаем проект, компилим, переимновываем exe, компилим 2-ой раз, сравниваем (fc /b file1.exe file2.exe >1.log) и видим — разные!
Здравствуйте, Аноним, Вы писали:
А>кто подскажет почему при компиляции delphi проекта EXE всегда получаются разные, даже если ничего не менять в самом проекте? А>т.е. на одном компе создаем проект, компилим, переимновываем exe, компилим 2-ой раз, сравниваем (fc /b file1.exe file2.exe >1.log) и видим — разные!
В PE-заголовке есть поле TimeStamp, оно и меняется
Re[2]: разные exe после компиляции
От:
Аноним
Дата:
23.05.05 07:29
Оценка:
Здравствуйте, igdrasil, Вы писали:
I>Здравствуйте, Аноним, Вы писали:
А>>кто подскажет почему при компиляции delphi проекта EXE всегда получаются разные, даже если ничего не менять в самом проекте? А>>т.е. на одном компе создаем проект, компилим, переимновываем exe, компилим 2-ой раз, сравниваем (fc /b file1.exe file2.exe >1.log) и видим — разные!
I>В PE-заголовке есть поле TimeStamp, оно и меняется
Если бы только оно! Exe-файл имеет кучу отличий в разных местах...
Здравствуйте, <Аноним>, Вы писали:
А>Если бы только оно! Exe-файл имеет кучу отличий в разных местах...
Компайлер Delphi — вообще штука неустойчивая. К примеру, на ассемблере команду mov eax, ebx можно записать двумя разными способами. Семантика не меняется, но бинарное представление будет отличаться. Так вот компилер выбирает эти способы достаточно непредсказуемым образом.
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>Компайлер Delphi — вообще штука неустойчивая. К примеру, на ассемблере команду mov eax, ebx можно записать двумя разными способами. Семантика не меняется, но бинарное представление будет отличаться. Так вот компилер выбирает эти способы достаточно непредсказуемым образом.
Здравствуйте, Sinclair, Вы писали:
S>Компайлер Delphi — вообще штука неустойчивая. К примеру, на ассемблере команду mov eax, ebx можно записать двумя разными способами. Семантика не меняется, но бинарное представление будет отличаться. Так вот компилер выбирает эти способы достаточно непредсказуемым образом.
Ничего подобного.
Просто в секции .rsrc на каждый ресурс (иконку,курсор и.т.д) ставится TimeStamp.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, vlad_gri, Вы писали:
_>>Пример в студию. S>Поищи в любом Delphi-екзешнике опкоды 89В8 и 8BC3. Найдешь оба.
И что.
И тот и другой опкод обозначает одно и тоже mov eax,ebx
Здравствуйте, vlad_gri, Вы писали: _>И тот и другой опкод обозначает одно и тоже mov eax,ebx
Я в курсе. _>Так в чем проблема ???
Гм. Ты точно читал переписку? Цитирую:
К примеру, на ассемблере команду [b]mov eax, ebx можно записать двумя разными способами... Так вот компилер выбирает эти способы достаточно непредсказуемым образом.
Я не нашел никакой закономерности в выборе одного из этих опкодов.
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, vlad_gri, Вы писали: _>>И тот и другой опкод обозначает одно и тоже mov eax,ebx S>Я в курсе. _>>Так в чем проблема ??? S>Гм. Ты точно читал переписку? Цитирую: S>
К примеру, на ассемблере команду [b]mov eax, ebx можно записать двумя разными способами... Так вот компилер выбирает эти способы достаточно непредсказуемым образом.
S>Я не нашел никакой закономерности в выборе одного из этих опкодов.
Пожалуй мы несколько отклонились от темы.
По теме и закономерностям. Если один и тотже проект, с одними и теже опциями компилятора,
одним и темже компилятором откомпилить 2(10-100-...) раза, то изменения будут только в TimeStamp`ах
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, vlad_gri, Вы писали: _>>И тот и другой опкод обозначает одно и тоже mov eax,ebx S>Я в курсе. _>>Так в чем проблема ??? S>Гм. Ты точно читал переписку? Цитирую: S>
К примеру, на ассемблере команду [b]mov eax, ebx можно записать двумя разными способами... Так вот компилер выбирает эти способы достаточно непредсказуемым образом.
S>Я не нашел никакой закономерности в выборе одного из этих опкодов.
На счет закономерности, надо помнить что компилятор Delphi, содержит два раздельных компилятора,
компилятор ASM и собственно компилятор OP.
Компилятор ASM создает опкод 89B8 а компилятор OP 8BC3.