Макрокоманды
Вывод 3. Большие участки кода рекомендуется описывать как процедуры, а маленькие - как макроопределения.
Поэтому в программах критических по времени следует применять макросредства, а если необходимо экономить память следует применять процедуры.
Вывод 2.Применение макросредствэкономит времявыполнения программы.
Вывод 1. Применение процедур делает код более компактным, т.е.экономим память
Сравнительный анализ процедур и макросредств
Повторяющиеся действия (фрагменты) в программе можно описать и как процедуру, и как макроопределение. При этом в обоих случаях повторяющийся участок кода описан только один раз, а обращаемся к нему с помощью одной команды (вызов процедуры или макрокоманда). Но...
После трансляции процедура так и останется описанной один раз, а тело макроопределения подставится во все места вызова и тем самым увеличит размер программы.
Но при обращении к процедуре
а) выполняется засылка параметров в регистры или стек,
б) запоминается адрес возврата
в) осуществляется переход,
г) по окончании работы процедуры восстанавливается адрес возврата,
д) очищаются регистры или стек и т.п.
Итак, при работе процедуры тратится время на переходы и передачу параметров во время выполнения программы.
!!! При замене макрокоманд на макрорасширения тоже тратится время, но это происходит на этапе трансляции, а не во время выполнения программы.
Если в повторяющемся участке кода много команд (т.е. большой фрагмент) лучше описать его как процедуру. Если же небольшую группу команд описать процедурой, то число вспомогательных команд по ее вызову и передаче параметров станет сравнимым с числом команд самой процедуры, ее время выполнения станет на много больше.
!!! Еще одно отличие использования макросредств и процедур заключается в том, что параметрами процедур могут быть только операнды команд, а параметрами макрокоманд могут быть любые последовательности символов, в том числе и сами команды.
Осмысленное рассмотрение данного механизма предполагает понимание смысла терминов макрокоманда и макроопределение. Макрокоманда представляет собой строку, одним из компонентов которой является символическое имя макрокоманды. Имя макрокоманды может сопровождаться параметрами. Если данная строка встречается в теле исходного текста программы, то транслятор замещает ее одной или несколькими другими строками. Какими именно строками — определяется макроопределением, которое представляет собой шаблон (описание) макрокоманды.
Таким образом, для использования макрокоманды в программе первым делом задают ее макроопределение.
Синтаксис макроопределения следующий:
имя_макрокоманды macro список_формальных_аргументов
тело макроопределения
endm
Макроопределение обрабатывается компилятором особым образом. Для того чтобы использовать описанное макроопределение, его нужно «активизировать» с помощью макрокоманды. Для этого в нужном месте исходного кода программы на основе текста заголовка макроопределения указывается следующая синтаксическая конструкция:
имя_макрокоманды список_фактических_аргументов