Руководство по языку B.Pascal 7

       

Эффективная компоновка


Компоновщик Borland Pascal автоматически удаляет неиспользу- емый код (по процедурам), то есть процедуры и функции, являющиеся частью скомпилированной программы, но к которым нет обращений, не включаются в файл типа .EXE. Процедуры, функции, переменные и ти- пизованные константы, участвующие в процессе компиляции, но ссыл- ки на которые отсутствуют, удаляются из файлa .EXE. Удаление не- используемого кода выполняется по процедурам, а удаление неис- пользуемых данных - по секциям, где эти данные описываются.

Рассмотрим следующую программу:

program SmartLink; const H: array[0..15] of char = '0123456789ABCDEF'; var I,J : integer; X,Y : real; var S: string[79]; var A: array[1..10000] of integer;

procedure P1: begin A[1] = 1; end;

procedure P2; begin I := 1;

end;

procedure P3; begin S := 'Borland Pascal'; P2; end;

begin P3; end;

Основная программа вызывает процедуру P3, которая вызывает процедуру P2, поэтому обе процедуры P2 и P3 включаются в файл .EXE. Поскольку P2 ссылается на первый раздел описания перемен- ных, а P3 ссылается на второй раздел описание переменных, пере- менные I, J, X, Y, S также включаются в выполняемый файл. Однако на процедуру P1 никаких ссылок нет, а включенные в выполняемый файл процедуры не ссылаются на переменные Н и A, поэтому эти объ- екты удаляются.

Эффективная компоновка имеет особую ценность в связи с ис- пользованием модулей, которые реализуют библиотеки процедур и функций. Примером такого модуля является стандартный модуль Dos, который содержит ряд процедур и функций. При этом программа редко использует все эти процедуры. Если она использует только одну или две процедуры или функции, то только эти процедуры включаются в полученный в результате код.



Содержание раздела