Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Условное ассемблирование
Если макросы и блоки повторения позволяют избежать многократного выписывания в исходном тексте программы повторяющихся фрагментов, то рассматриваемое в данном разделе средство макроязыка - условное ассемблирование - удобно при многократных прогонах программы. Оно дает возможность в исходном тексте держать несколько вариантов одного и того же участка программы, а при каждом ее прогоне оставлять в окончательном тексте только один из них. Какой именно вариант будет оставлен, зависит от тех или иных условий, которые автор программы задает перед прогоном. Выгода от такой условной сборки окончательного текста программы заключается в том, что автор программы не должен перед каждым ее прогоном вручную редактировать ее текст (это чревато ошибками и требует значительного времени), а возлагает эту работу на макрогенератор (он работает без ошибок и быстрее).Участок программы, затрагиваемый условным ассемблированием, должен записываться в виде так называемого IF-блока: < IF –директива> < IF –директива> <фрагмент-1> или <фрагмент-1> ELSE ENDIF <фрагмент-2> ENDIF Директивы ELSE и ENDIF обязательно должны записываться в отдельных строчках. В каждом же фрагменте может быть любое число любых предложений, в частности в них может быть IF-блоки, т.е. допускается вложенность IF-блоков. В IF-директиве (имеется несколько разновидностей ее) указывается некоторое условие, которое проверяется макрогенератором. Если условие выполнено, то макрогенератор оставляет в окончательном тексте программы только фрагмент 1, а фрагмент -2 исключает, не переносит в окончательный текст. Если же условие не выполнено, то все наоборот. Если части ELSE нет, то считается, что фрагмент-2 пуст, поэтому при не выполнении условия такой IF- блок ничего не «поставляет» в окончательный текст программы. Поскольку условие в IF-директиве проверяется на этапе макрогенерации, то вполне естественно, в нем не должно быть ссылок на величины,которые станут известными только при выполнении программы (например, в условии нельзя ссылаться на содержимое регистров или ячеек памяти). Более того, условие должно быть таким, чтобы макрогенератор мог вычислить его сразу, как только встретит его (например, в нем не должно быть ссылок вперед). В макроязыке довольно много разновидностей IF-директивы. Мы будем рассматривать их парами, в каждой из которых директивы проверяют противоположные условия.
Date: 2015-10-21; view: 364; Нарушение авторских прав |