Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Хакерские Штучки    >>    itpu131
   
 
 ITPU v.1.31. Инструмент изучения TPU файлов v6.0  Василий Востриков 16.01.1995

Средство изучения интерфейса объектных модулей Турбо Паскаля (TPU)



31k 
 

01/16/92 ITPU v1.31 Что нового в этой версии? ------------------------- o Возможность использования с Turbo Pascal for Windows - новая опция командной строки /L o Возможность указывать список каталогов с модулями (/U) o Небольшие комментарии полученного текста o Обработка файлов конфигурации o Полная поддержка case-структур o Обработка inline-функций o Разделение типизированных и нетипизированных констант 01/25/92 ITPU v1.31 ~~~~~~~~~~~~ Средство изучения интерфейса объектных модулей Турбо Паскаля (TPU) Предлагаемая программа выбирает из TPU-файлов всю полез- ную символьную информацию и выводит ее в файл в приемлемом ви- де. Для внесения ясности надо заметить, что это не производи- тель исходного кода, поэтому формат выходного файла, хотя и максимально приближен к традиционному стилю оформления исход- ных текстов на Паскале, на самом деле не обязательно является правильным. Это обусловлено рядом технических причин. В конце концов, не нужно забывать, что TPU - это всего лишь ОБЪЕКТНЫЙ код, совсем не предназначенный для того, чтобы из него произ- водить полновесный исходный текст. К сожалению, Borland не гарантирует вертикальную сов- местимость (что, на взгляд автора, ему несвойственно) в отно- шении TPU, поэтому доступен лишь формат TPU-файлов, сгенериро- ванных версией Турбо Паскаля 6.0, а также версией Турбо Паска- ля для Windows. Что ж, можно повторить известную Борландовскую сентенцию: "Вам необходимо перекомпилировать все старые модули с помощью новой версии компилятора". В этой версии несколько существенных дополнений и новых опций командной строки. Формат вызова достаточно прост: itpu [options] <inputfile>[.TPU] [<outputfile>[.INT]] Квадратные скобки по традиции обозначают необязательные параметры. Как и во всякой хорошей программе, порядок следова- ния опций и наличие между ними n-го числа пробелов не имеет решительно никакого значения. В именах файлов расширения могут быть как опущены, так и явно указаны. В версии 1.31 имеются в наличие следующие опции: /c Управление регистром букв в идентификаторах. u - Все буквы в верхнем регистре l - Все в нижнем регистре s - Традиционный стиль (первая буква в верхнем регистре, все остальные - в нижнем) По умолчанию принимается верхний регистр (/cu) /w Управление записью в файл. Если /w+ (или просто /w), то старый файл будет переписан, если /w-, то при наличии старого файла, будет выдано сообщение об ошибке и осуществлено вываливание в DOS. По умолчанию принимается последнее. /r Управление выводом комментариев. Пока что все комментарии состоят из размера записей record. Если запись содержит case-объединения, то выво- дится ее максимальный размер. /l Имя системной библиотеки, которая будет использо- ваться вместо стандартной TURBO.TPL. Можно указы- вать полный путь и даже нестандартное расширение (по умолчанию принимается .TPL). Например, поль- зователи Turbo Pascal for Windows могут указать /lTPW или /l\TPW\BIN\TPW. Проверка на соот- ветствие библиотеки не осуществляется, поэтому, возможна ситуация, когда unit скомпилирован с по- мощью Turbo Pascal for Windows, а библиотека была для v6.0, - в этом случае могут появиться всякие ругательные 'unknown' или что-нибудь в этом роде. /u Список каталогов, в которых могут находиться недостающие модули. Поиск модулей осуществляется в текущем каталоге, затем в этом списке, а затем в PATH. В командной строке могут быть указаны несколько параметров /U. В этом случае они присоединяются друг к другу. В версии 1.31 добавлена такая существенная возможность, как поддержка файлов конфигурации (CFG). CFG-файлы рассматри- ваются как часть командной строки, но допускают более свобод- ный формат написания параметров - элементы могут разделяться не только пробелами и символами-разделителями (/), но и распо- лагаться на разных строках, что облегчает чтение CFG-файла. В качестве примера приведен такой CFG-файл. Поиск файлов конфи- гурации осуществляется сначала в том каталоге, откуда запущена программа, а затем в текущем. Вообще, для наглядности можно считать CFG-файлы продолжением (или, скорее, началом) команд- ной строки. Таким образом, количество информации, переданной программе ограничивается лишь Вашей фантазией и наличием сво- бодной памяти. Конечно, в этой версии не бог весть сколько ин- формации, но если смотреть чуть дальше, то станет ясно, что командной строки в один прекрасный момент может не хватить. Параметры могут повторяться, но использоваться будет последнее принятое значение. Например, если в CFG-файле в каталоге, от- куда запущена программа указано /cs, в CFG-файле в текущем ка- талоге /cu, а в командной строке /cl, то будет использоваться /cl. Одно маленькое, но необходимое замечание: CFG-файл должен иметь то же имя, что и программа, поэтому, если кто-то по за- гадочным соображениям решит назвать программу еще более по-другому, то нужно также переименовать и CFG-файлы. В этой версии исправлены некоторые мелкие неполадки, а также введена обработка записей, содержащих case-объединения. Нужно сказать, что не всегда сложные записи с большим коли- чеством вложенных case-структур будут выглядеть идентично исходному тексту, но если выдрать полученную запись и скомпи- лировать, то результат будет аналогичным, т.е. относительное положение каждого поля отражается верно. Кроме того, в версии 1.31 введен новый раздел - 'typed const', куда помещаются все типизированные константы, - это несколько облегчает чтение интерфейса. Расширена информация о dependency-файлах, - выдается тип файла, дата создания (если имеется) и каталог (тоже если имеется). Поддерживаются следую- щие типы файлов: pascal, include, object и resource. В этой версии также полностью обрабатываются inline-функции.