용어체크
1. 매크로 인수
매크로 인수는 형식인수와 실인수로 나뉜다. 형식인수는 매크로 정의 시 명시되는 인수로 매개변수라고도 한다. 실인수는 정의한 매크로를 호출할 때 주어지는 인수로 매크로에서 사용되는 인수로는 정의 시에 사용되는 형식인수의 호출 시에 주어지는 실인수로 구성된다.
2. 매크로 정의표
매크로의 정의 부분의 모든 줄을 저장해 놓은 표를 의미한다.
3. 매크로 이름표
패스 2에서 매크로 호출 여부를 빠르게 검색하기 위해서 참조되는 표이다.
학습내용
|
1. 이중패스 매크로 프로세서 알고리즘
1) 이중패스 알고리즘
두 가지의 알고리즘
① 매크로 정의가 표지 기호나 인자들만으로 구성된 기본적인 매크로만을 확장할 수 있는 매크로 프로세서
② 매크로 정의 내에 다른 매크로 호출이나 다른 내포된 매크로를 확장할 수 있는 비교적 복잡한 매크로 프로세서
패스 1은 동일하고 패스 2는 각각 다르다
2) 패스 1 알고리즘
패스 1의 기능
① 원시 프로그램 내의 모든 명령어를 조사
② 매크로 정의 부분을 빠짐없이 MDT에 저장
③ MDT와 함께 MNT와 형식 인수표를 생성
④ 생성된 표들을 패스 2의 입력으로 보냄
↓
3) 패스 2 알고리즘
패스 2의 기능
기본적인 기능만을 포함한 패스2의 기능
① 모든 코드를 검색
② MNT와 MDT를 조사 참조하여, 매크로 이름 형식으로 쓰여진 각 매크로 호출을 적당한 명령어 블록으로 치환
③ 매크로 이름표(MNT)는 따로 작성할 필요는 없으나 매크로 이름을 빠르게 검색하는 데 필요한 표
4) 이중 패스와 단일 패스
이중 패스
① 장점 : 매크로 호출이 해당 매크로의 정의에 앞서 나타날 수 있음
② 전향 참조 : 어셈블리 언어 프로그램에서는 반드시 필요한 것, 매크로 처리시에는 크게 중요하지 않음
단일 패스
하나의 패스로 처리. 전향 참조를 금지하면 단일 패스로 구현이 가능하다. 매크로 내의 매크로 호출이나 다중 매크로 정의도 처리 가능하다.
5) 매크로 내 매크로 호출 패스 2 알고리즘
스택(stack)
매크로 내의 매크로 호출 기능을 처리하기 위해서는 스택이 사용된다.
하나의 매크로를 확장하는 동안에 그 확장 중인 매크로에 내포된 매크로(Nested Macro)를 만나면 그 내포된 매크로를 먼저 확장하고 처음의 매크로로 돌아가서 확장을 끝냄.
하나의 매크로 프로세서가 여러 개의 매크로를 확장하려면 내부에 포함된 매크로를 확장하기 이전에 현재 상태(위치)를 어떤 방법으로든 보관해두어야 함. -> 이것을 스택이 해준다.
1. 알고리즘 실행 사례
1) 이중 패스 알고리즘 실행 예제...
Q. 프로그램을 작성하다 보면 동일한 명령어들이 하나의 묶음으로 이루어져 반복적으로 사용되는 경우가 있다. 프로그램 내에서 자주 반복되는 작업을 매크로를 이용하면 매우 유용하게 사용될 수 있다. 이러한 매크로는 이중 패스 알고리즘에 의해 처리된다고 한다. 이중 패스 알고리즘이 무엇인가?
매크로 프로세서는 하나의 입력 프로그램 속의 매크로를 처리하고, 그 출력결과를 어셈블러가 받아 어셈블 할 수 있도록 구성되었습니다. 또한 내부적으로 패스 1의 출력 결과를 패스2에서 받아 사용합니다. 이중패스 매크로 프로세서 알고리즘은 기본적으로 매크로 전향 참조를 지원하는 알고리즘을 말합니다.
Quiz 01매크로 기능이 포함된 원시 프로그램에서 번역되어 실행되는 과정에서 매크로 프로세서가 요구되는 시점은 로더가 적재 모듈을 적재하기 전이다.
- 1 O
- 2 X
정답 :2
해설 :매크로 프로세서는 어셈블러가 원시 프로그램을 번역하기 전에 요구된다.
Quiz 02매크로 프로세서에서 사용하는 표가 아닌 것은?
- 1 MDT, 형식 인수표
- 2 MNT, 기호표, 명령어표
- 3 MNT, 형식 인수표
- 4 MDT, 형식인수표, 실인수표
정답 :2
해설 :명령어표는 이중 어셈블러에서 사용되는 표이다.
Quiz 03다음은 매크로를 정의한 프로그램이다. 빈 칸에 들어갈 내용이 순서대로 바르게 짝지어진 것은?
- 1 ADD2, ARG2, END
- 2 LAB, ARG2, ENDM
- 3 LABEL, ARG, END
- 4 LABEL, ARG, ENDM
정답 :2
해설 :레이블 이름 LAB와 정의된 ARG2 파라미터를, 매크로의 종료를 뜻하는 ENDM을 선택하면 된다.
학습정리
1. 이중패스 매크로 프로세서 알고리즘
- 두 가지의 알고리즘은 매크로 정의가 표지 기호(Label)나 인자(Argument)들만으로 구성된 기본적인 매크로만을 확장할 수 있는 매크로 프로세서이다. 매크로 정의 내에 다른 매크로 호출이나 다른 내포된 매크로를 확장할 수 있는 비교적 복잡한 매크로 프로세서로 패스 1과정은 동일하고 패스2만 다르다.
- 매크로 프로세서의 입력과 출력
- 패스 1의 기능은 원시 프로그램 내의 모든 명령어 조사, 매크로 정의 부분을 빠짐없이 MDT내에 저장, MDT와 함께 MNT와 형식 인수표를 생성, 생성된 표들을 패스2의 입력으로 보낸다.
- 패스 2는 기본적인 기능만을 포함한 기능으로 모든 코드를 검색, MNT와 MDT를 조사 참조, 매크로 이름 형식으로 쓰여진 각 매크로 호출을 적당한 명령어 블록으로 치환, 매크로 이름표는 매크로 이름을 빠르게 검색하는데 필요하다.
2. 알고리즘 실행 사례
- 소스코드 예
- 확장된 명령어 출력
'컴퓨터공학 > 시스템프로그래밍' 카테고리의 다른 글
시스템프로그래밍 10 - 2 이중 패스 어셈블러의 설계 (0) | 2021.10.28 |
---|---|
시스템프로그래밍 10 - 1 어셈블러 개요 (0) | 2021.10.25 |
시스템프로그래밍 9 - 1 매크로 프로세서 설계 1 (0) | 2021.10.14 |
시스템프로그래밍 7 - 2 매크로의 기능 (0) | 2021.10.09 |
시스템프로그래밍 7 - 1 (0) | 2021.10.05 |