sign писал(а):Спешу вам сообщить, что ваше MyLovelyGoto - это имя. И адрес1 - это тоже имя.
А как ещё я Вам напишу, адрес, если его назначает линковщик после ассемблирования и компилирования?
все ассемблеровские "закорючки", превратятся в нечто такое: 0001 0000 0010 0111
Но важно другое, со слов скалогрыза: даже если не использовать RTTI, то всё-равно имя класса является частью его VMT таблицы. Т.е. имя будет записано как оно есть. Никакия оптимизаторы секцию .data вроде как не трогают (они занимаются кодом) Судя по исходникам FPC (ncgvmt.pas) никаких возможностей для манипуляций не предусмотрено.
Из этого следует что, в бинарном коде помимо нормальных и легко читаемых значений, типа: 0001 0000 0010 0111, будут ещё видны дурацкие сложночитаемые названия всех классов и функций, т.к. идентификация функций внешних библиотек определяются по имени.
Вот эти дурацкие сложночитаемые имена, типа:
TMyLovelySuperPuperDlinnyiNameClass - нужно уничтожить в бинарном коде, или хотя-бы превратить в T1, T2, T3. Потому что, классов в любой программе - очень много и не только Вами написанных.
И даже когда программа сравнивает:
if ('TMyLovelySuperPuperDlinnyiNameClass' = varStringTest) then <== это дольше работает нежели обфускацированная конструкция сравнивания:
if ('T1' = varStringTest) then И так нужно поступить со всеми элементами, которые сохраняют в бинарном виде свои имена! Но увы, такой фичи нет в IDE - и это расстраивает
. Самому сокращать имена классов нельзя, т.к. неудобно будет их идентифицировать, соответственно - это должен делать ОПТИМИЗАТОР и только по требованию программиста.
.