매크로 : 프로그램 내에서 동일한 코드가 반복될 경우 반복되는 코드를 한번만 작성하여 특정이름으로 정의한 후 그 코드가 필요할 떄마다 정의된 이름을 호출하여 사용하는 것
매크로 프로세서 : 원시 프로그램에 존재하는 매크로 호출부분에 매크로 프로그램을 삽입하여 확장된 원시 프로그램을 생성하는 시스템 소프트웨어
매크로 프로세서 알고리즘과 자료구조
Two – pass macro processor
- 매크로 정의는 first pass동안 처리
- Macro invocation statements는 second pass에서 확정
- 2패스 매크로 프로세서는 다른 매크로의 정의를 다른 매크로에 포함하는 것을 금지
알고리즘
2pass macro processor
Pass1 : 매크로 정의
Pass2 : 매크로 확장
Single pass macro processor
매크로 정의랑 확장 처리
Concatenation of Macro Parameters
대부분의 매크로 프로세서는 매개변수가 다른 문자열과 합쳐(concatendated)지는걸 허용ex) A program contains one series of variables named by the symbols XA1, XA2, XA3, …,
another series named by XB1, XB2, XB3, …, etc.
매크로 정의의 본문은 다음과 같이 statement를 포함한다
SUM Macro &ID
LDA X&ID1
LDA X&ID2
LDA X&ID3
LDA X&IDS
매크로 매개변수의 시작은 &로 시작하나, 끝은 표기되어있지 않음
매개변수의 끝이 포함되어있지 않아 생기는 문제점으론 X&ID1 may mean “X” + ID + “1” or “X” + ID1이 있다
In which the parameter &ID is concatenated after the character string X and before the character string 1.
이문제를 해결하기위해 특수한 연결 연산자를 사용 ex)sic, sic/xe에선 -> 사용
Positional parameters : 매개변수와 인자는 각각 그들의 위치에 맞는 매크로 프로토타입 그리고 호출문과 연결
Keyword parameters : Each argument value is written with a keyword that names the corresponding parameter.