Skip to main content

Что такое макрокоманда?

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

Программисты использовали макрокоманды по разным причинам, но наиболее распространенными из них были уменьшение количества повторяющегося кода в программе, устранение возможности ошибки в макрокоде и предоставление часто используемых наборов инструкций, чтобы несколько программистов могли использовать та же макрокоманда. В ассемблере каждый отдельный шаг, необходимый для достижения определенного результата, должен быть написан явно. Примером может служить программа, которая добавила три числа вместе.

Оператор сложения на языках более высокого уровня часто воспринимается как должное, но операция добавления трех чисел на ассемблере требует как минимум шести отдельных строк кода. Первые две строки загружают числа в поля, называемые регистрами, которые фактически соответствуют физическим схемам внутри компьютера. Третья строка добавляет два регистра, а четвертая строка сохраняет результат в другом регистре. Пятая строка загружает последнее число, которое будет добавлено в регистр, а последнее утверждение добавляет предыдущий результат к третьему числу.

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

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