Cтраница 1
Условная трансляция позволяет порождать из одного файла, содержащего исходную программу, различные версии объектных программ в зависимости от значений параметров периода трансляции. [1]
Однако условная трансляция имеет существенное преимущество. Границу между гибкостью и множественностью можно очень плавно изменять. [2]
Поддирективы условной трансляции могут быть помещены в блоки условной трансляции для того, чтобы разрешить: трансляцию части кодов условного блока, когда условие блока указывает, что блок не должен быть транслирован; трансляцию не смежных с заголовком кодов условного блока, когда условие блока выполняется; безусловную трансляцию кодов внутри условного блока. [3]
Средства условной трансляции представлены следующими предложениями. [4]
Директива непосредственной условной трансляции является средством записи однострочного условного блока. Условие записывается в одной строке с оператором, являющимся телом блока. [5]
В приведенной директиве условной трансляции, если FLAG не определен, то проводится его определение путем присваивания ему значения. При последующих вызовах макрокоманды значение FLAG будет определено и рассматриваемой директивой не изменяется. [6]
Язык включает средства условной трансляции, макропроцессор и развитую систему управления функциями транслятора для генерации листингов и таблиц перекрестных ссылок. Макроассемблер имеет возможность использования расширенной арифметики, использования библиотек, макрокоманд пользователя и системы. Транслятор для таблиц символов пользователя использует виртуальную память. Поэтому размер физической памяти не ограничивает размер транслируемой программы, так как когда оперативной памяти не хватает, используется внешняя память на диске. [7]
Макроассемблеры могут также содержать псевдокоманды условной трансляции, которые обеспечивают трансляцию соответствующих операторов, если выполняется определенное условие. Например, следующая версия RESERV формирует сообщение об ошибке, если имеется превышение выделенного объема памяти для данных. [8]
Средством создания множественных систем является также условная трансляция. Это средство, имеющееся в современных языках программирования, состоит в применении именованных констант и в статическом вычислении ( в процессе трансляции) тех выражений, которые это допускают. При этом инструментальный язык и транслятор должны предусматривать указание значений таких компонентов в задании на трансляцию и выделение по умолчанию основного значения. [9]
Директивы, используемые для макрокоманд и условной трансляции. [10]
Поддирективы условной трансляции могут быть помещены в блоки условной трансляции для того, чтобы разрешить: трансляцию части кодов условного блока, когда условие блока указывает, что блок не должен быть транслирован; трансляцию не смежных с заголовком кодов условного блока, когда условие блока выполняется; безусловную трансляцию кодов внутри условного блока. [11]
Макроассемблер допускает глубину вложения до 16 ( десятичное) блоков условной трансляции. [12]
Директива ENDIF используется для того, чтобы обозначить конец текущего уровня условной трансляции. Условные директивы могут иметь вложенность любого уровня, но каждой директиве ENDIF должна соответствовать ранее использованная директива IF. [13]
Тогда при трансляции приведенного фрагмента во время проверки условий в начале первого блока условной трансляции разность значения символа СМ-4 и константы 3 не равна нулю и тело блока не транслируется. Во втором блоке условие EQ выполняется и текст транслируется. [14]
В данном примере предполагается, что если условие в первом ( внешнем) операторе условной трансляции не выполняется, то ни один вложенный условный оператор проверяться не будет. [15]