Što je makro instrukcija?

Makro instrukcija u računalnom programiranju je jedna instrukcija koja se, kada se program prevede, zamjenjuje unaprijed definiranim blokom koda. Izraz se izvorno primjenjivao na instrukcije korištene u programiranju na asembleru, u kojem je dug, ponavljajući kod ponekad bio potreban za vrlo jednostavne operacije. Razvoj makro instrukcija bio je jedan od prvih koraka prema stvaranju jezika koji se temelji na biblioteci reprezentativnih funkcija kako bi se male akcije mogle skupiti zajedno pod jednim pozivom naredbe u zasebnom programu. Rane knjižnice makro uputa najčešće su isporučivali proizvođači hardvera i softvera kako bi pomogli programerima da koriste i pristupaju značajkama na ispravan način.

Programeri su koristili makro instrukcije iz raznih razloga, ali najčešći su bili smanjenje količine koda koji se ponavlja u programu, uklanjanje mogućnosti pogreške unutar makro koda i pružanje uobičajenih skupova instrukcija kako bi nekoliko programera moglo koristiti ista makro instrukcija. U asembleru, svaki pojedinačni korak potreban za postizanje određenog rezultata mora biti eksplicitno napisan. Primjer bi mogao biti program koji je zbrajao tri broja.

Operator zbrajanja u jezicima više razine često se uzima zdravo za gotovo, ali operacija zbrajanja tri broja u asemblerskom jeziku zahtijeva najmanje šest zasebnih redaka koda. Prva dva retka učitavaju brojeve u polja koja se nazivaju registri koja zapravo odgovaraju fizičkim krugovima unutar računala. Treći red dodaje dva registra, a četvrti redak pohranjuje rezultat u drugi registar. Peti red učitava posljednji broj koji se dodaje u registar, a završni izraz dodaje prethodni rezultat trećem broju.

Ovaj slijed operacija lako se može pretvoriti u makro instrukciju tako da je potreban samo jedan redak koda, zajedno s tri broja koja treba dodati kao parametre. Kada program konačno sastavi asembler i pretvori ga u strojni kod, radnje koje se nazivaju prethodna obrada poduzimaju se prije nego što se sklopi. Predprocesor uzima makro instrukciju i parametre i proširuje je u potrebne retke koda, zamjenjujući parametre za reprezentativna rezervirana mjesta unutar stvarnog koda makroa.

Nakon što je upotreba makro instrukcija postala široko rasprostranjena, mnogi uobičajeno korišteni blokovi koda bili bi sastavljeni u knjižnice makro instrukcija. Te su knjižnice sadržavale nekoliko makronaredbi koje su pomogle u pojednostavljenju programiranja u asemblerskom jeziku, kao i za osiguravanje da se određene operacije izvode na dosljedan način u različitim programima. Opsežna upotreba knjižnica makro instrukcija na kraju je dovela do jezika više razine koji su se oslanjali na vlastite knjižnice kako bi pružili opsežnu funkcionalnost s mnogo manje ponavljajućih programskih zahtjeva.