매크로 프로세서
IT위키
더 많은 작업
매크로 프로세서(Macro Processor)는 원시 프로그램 안에 정의된 매크로를 찾아, 매크로 이름이 쓰인 자리마다 정의된 명령 묶음을 펼쳐 넣는 시스템 소프트웨어이다.
| 용어 | 뜻 |
|---|---|
| 매크로 정의(Macro Definition, Macro Define) | 매크로 이름과 그 이름이 대신할 명령 묶음(매크로 본체)을 정해 두는 것. 어셈블리어에서는 MACRO 와 MEND 사이에 쓴다
|
| 매크로 호출(Macro Call) | 정의된 매크로 이름을 주 프로그램(본 프로그램)에 기술하는 것. 이 자리가 나중에 매크로 본체로 바뀐다 |
| 매크로 확장(Macro Expansion) | 매크로 호출이 있는 자리에 정의된 명령 묶음을 그대로 펼쳐 넣는 것. 호출에 준 실제 인수로 형식 인수를 바꿔 넣는다 |
| 매크로 라이브러리(Macro Library) | 자주 쓰는 매크로 정의를 모아 두고 여러 프로그램이 가져다 쓰게 한 것 |
- 이름을 정의하는 것과 그 이름을 본문에 적는 것을 구분해야 한다. 주 프로그램에 매크로 이름을 적는 것은 정의가 아니라 호출이다
- 호출된 이름이 실제 명령으로 바뀌는 과정은 확장이라 한다. 영어로는 expansion 이고, 확장 결과는 매크로 프로세서가 내놓는 출력이다
매크로 프로세서는 원시 프로그램을 읽으며 다음 네 가지 일을 한다.
- 매크로 정의 인식 - MACRO 같은 지시어를 보고 매크로 정의가 시작되는 곳을 알아낸다
- 매크로 정의 저장 - 매크로 이름과 본체를 표(매크로 이름 테이블, 매크로 정의 테이블)에 저장한다
- 매크로 호출 인식 - 원시 프로그램에서 저장해 둔 매크로 이름이 나오는 곳을 찾는다
- 매크로 확장과 인수 치환 - 호출 자리에 매크로 본체를 펼쳐 넣고, 형식 인수를 실제 인수로 바꾼다
매크로 정의 안에서 다른 매크로를 호출할 수 있고, 매크로 정의를 두 번에 나눠 처리하는 2단계(two-pass) 방식이 흔하다. 첫 단계에서 정의를 모두 저장하고 둘째 단계에서 호출을 확장한다.
SWAP MACRO &A, &B ; 매크로 정의 시작 (형식 인수 &A, &B)
LOAD &A
STORE TEMP
LOAD &B
STORE &A
LOAD TEMP
STORE &B
MEND ; 매크로 정의 끝
...
SWAP X, Y ; 매크로 호출 (주 프로그램에 이름을 적음)
매크로 프로세서는 마지막 줄의 SWAP X, Y 를 지우고 그 자리에 LOAD X, STORE TEMP … STORE Y 여섯 줄을 펼쳐 넣는다(매크로 확장).
| 구분 | 매크로 | 서브루틴(부프로그램) |
|---|---|---|
| 처리 시점 | 번역 전에 호출 자리마다 본체를 복사해 넣는다 | 실행 중에 호출해 한 벌의 코드로 갔다가 돌아온다 |
| 기억 공간 | 호출한 횟수만큼 코드가 늘어난다 | 코드는 한 벌만 있다 |
| 실행 속도 | 호출·복귀 과정이 없어 빠르다 | 호출·복귀와 인수 전달 비용이 든다 |