Скачать ITPU v.1.31. Инструмент изучения TPU файлов v6.0

16.01.1995
Скачать файл (32,29 Кб)




01/16/92             ITPU v1.31

Что нового в этой версии?

  • Возможность использования с Turbo Pascal for Windows - новая опция командной строки /L
  • Возможность указывать список каталогов с модулями (/U)
  • Небольшие комментарии полученного текста
  • Обработка файлов конфигурации
  • Полная поддержка case-структур
  • Обработка inline-функций
  • Разделение типизированных и нетипизированных констант
01/25/92

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

Предлагаемая программа выбирает из TPU-файлов всю полез- ную символьную информацию и выводит ее в файл в приемлемом ви- де. Для внесения ясности надо заметить, что это не производи- тель исходного кода, поэтому формат выходного файла, хотя и максимально приближен к традиционному стилю оформления исход- ных текстов на Паскале, на самом деле не обязательно является правильным. Это обусловлено рядом технических причин. В конце концов, не нужно забывать, что TPU - это всего лишь ОБЪЕКТНЫЙ код, совсем не предназначенный для того, чтобы из него произ- водить полновесный исходный текст.

К сожалению, Borland не гарантирует вертикальную сов- местимость (что, на взгляд автора, ему несвойственно) в отно- шении TPU, поэтому доступен лишь формат TPU-файлов, сгенериро- ванных версией Турбо Паскаля 6.0, а также версией Турбо Паска- ля для Windows. Что ж, можно повторить известную Борландовскую сентенцию: "Вам необходимо перекомпилировать все старые модули с помощью новой версии компилятора".

В этой версии несколько существенных дополнений и новых опций командной строки. Формат вызова достаточно прост:

   itpu [options] [.TPU] [[.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-функции.