4. Порядок вычислений выражений в случае равных приоритетов операций выбирается компилятором оптимальным (кроме логических выражений, вычисляемых слева направо).
5. По умолчанию режим проверки корректности диапазонов значений отключен (режим $R-), что уменьшает код и увеличивает быстродействие.
6. Где только возможно, компилятор заменяет целочисленное умножение на степени числа 2 операцией сдвига влево (shl).
7. По умолчанию производится оптимизация размещения данных в памяти, что задается режимом компиляции $А+.
8. В выполняемый файл не будут включены ветви программы, которые заведомо невыполнимы. Например, строка
if False then Оператор;
будет проигнорирована.
На этапе компоновки программы из ЕХЕ-файла будут автоматически удалены те процедуры, функции и разделы объявления переменных, к которым не происходит обращения в тексте программы. В частности, из этого следует, что объем ЕХЕ-файла определяется не как сумма размеров используемых им библиотек (модулей), а как сумма размеров кодов реально работающих подпрограмм и данных.
Оптимизация при компоновке включается только при компиляции программы на диск.
- 556 -
ПРИЛОЖЕНИЕ 7
Список демонстрационных процедур и функций
Program (рис. 6.16)
Демонстрация суммирования элементов массивов любого типа
Fast, IntPower (разд. 6.9.6.4)
Примеры рекурсивного вычисления факториала и целой степени числа
Unit Colors (рис. 6.19)
Модуль, выводящий цветовые константы
ExplodeString (рис. 8.4)
Процедура вывода строки с эффектом раздвижения и звуковым сигналом.
CenterStr (рис. 8.5)
Функция создания строки заданной длины со вставленной в середину подстрокой
ZStr (рис. 8.6)
Процедура преобразования числа в строку так, что предшествующие числу пробелы заменяются на нули
PosN (рис. 8.7)
Функция, возвращающая номер символа, с которого начинается N-е вхождение подстроки в строку
Binary (рис. 9.1)
Функция перевода целого числа в двоичное представление
Code2to1/Decode1to2 (рис.9.2)
Процедуры кодирования /декодирования двух малых числе в один байт
ATAN2 (рис. 9.3)
Функция возвращающая значение угла наклона оси X в радианах. Возвращаемое значение находится в диапазоне 0…2*Pi и учитывает знаки координат
AcrCos, ArcSin (рис 9.4)
Функции, возвращающие главные значения арккосинуса и арксинуса
Log10 (рис. 9.5)
Функция, возвращающая значение десятичного логарифма
Pwr (рис. 9.6)
Функция, возвращающая значение A в степени X (A > 0)
Gauss (рис. 9.7)
Функция, возвращающая случайное вещественное значение, распределенное по нормальному закону
HeapAvall (рис. 11.7)
Функция, возвращающая размер свободной области кучи, которая расположена выше значения HeapPtr
Unit StackManager (рис. 11.10)
Модуль, реализующий набор процедур для работы со стеком произвольных данных
FileExists (рис. 12.11)
Функция проверки существования файла с данным именем
ReadInteger (рис. 12.14)
Процедура ввода с клавиатуры значения типа Integer с игнорированием любого ввода, не соответствующего этому типу.
Program (рис. 13.8)
Каркас программы, реализующей полиморфные операции с динамически распределяемыми объектами с полной обработкой ошибок.
Devices (рис. 14.3)
Программа – демонстрация анализа конфигурации ПЭВМ
FillWord (рис. 14.4)
Процедура заполнения блоков памяти значением типа Word (по аналогии с FillChar)
NewExit (рис. 14.7)
Демонстрация процедуры обработки фатальных ошибок и выхода из программы
IsBlinking, GetBackGround, GetForGround (рис. 15.5)
Функции проверки факта мерцания символов на экране, текущего цвета фона и символов
VertStr(рис. 15.9)
Процедура вертикального вывода строки
Spiral (рис.15.10)
Процедура закраски по спирали области экрана
Program (рис. 15.11)
Демонстрация работы процедуры ClrEOL
Program (рис. 15.12, 15.13)
Демонстрация работы процедуры InsLine/DelLine
Program (рис. 15.14)
Демонстрация работы процедуры HighVideo, LowVideo
SoundType (рис. 15.15)
Процедура звуковой печати строк
Phone, Bell, Sirena (рис. 15.16)
Процедуры имитации звуков телефонного звонка, зуммера и сирены
XDOSVersoin (рис. 16.1)
Функция выдачи строки с номером версии MS-DOS
ShowSET (рис. 16.2)
Процедура вывода значений системных переменных MS-DOS
WhatDay (рис. 16.3)
Функция, возвращающая название дня недели по дате
Program (рис. 16.4)
Пример программы, анализирующей время своей работы
ChangeFTime (рис. 16.5)
Процедура смены даты и времени создания файла
Program (рис. 16.6)
Пример программы, анализирующей жесткие диски ПЭВМ