용어체크
1. 알고리즘
알고리즘(Algorithm)은 주어진 문제를 논리적으로 해결하기 위해 필요한 절차, 방법, 명령어들을 모아놓은 것입니다. 넓게는 사람 손으로 해결하는 것, 컴퓨터로 해결하는 것, 수학적인 것, 비수학적인 것을 모두 포함합니다. 프로그램을 만드는 전체 과정에서 볼 때 알고리즘을 짜는 것은 계획단계라고 할 수 있습니다.
2. 전향 참조
Forward Reference로 어떤 기호가 정의되지 않은 상태에서 기호를 사용하는 것을 의미한다.
3. 후향 참조
Backward Reference로 어떤 기호가 정의된 후에 기호를 사용한다.
학습내용
|
1. 설계 시 고려사항
4) 매크로프로세서가 해야 될 기본적인 작업
:: 4가지 기본기능 ::
① 매크로 정의 인식
② 매크로 정의 저장
③ 매크로 호출 인식
④ 매크로 호출 확장과 인수 치환
4) - ① 매크로 정의 인식 : 정의된 매크로 인식. 매크로 프로세서는 지시어 MACRO와 EDNM에 의해 구별되는 매크로 정의를 인식. 매크로 내의 매크로 정의가 나타나는 경우
4) - ② 매크로 정의 저장 : 매크로 호출이 발생했을 때 이에 대응하는 일련의 명령어를 확장하기 위하여 참고할 수 있는 정의부분을 내부에 저장해두어야 한다.
4) - ③ 매크로 호출 인식 : 또한 매크로프로세서는 연산명령어의 형식으로 나타나는 매크로 호출을 인식해야 하는데 이를 위해서 매크로 이름을 테이블(표)에 따로 저장하여 연산코드의 일종으로 다루어야 함.
4) - ④ 매크로 호출 확장과 인수 치환 : 매크로프로세서는 호출 시에 형식인수(Formal argument)에 대응하는 실 인수(Actual argument)값으로 치환해주어야 함. 인수 처리를 끝내고 확장
매크로명령어 인수에 관하여 매크로프로세서의 설계자는 다음의 결정을 내려야 함 :
* 인수의 사용 위치 결정(인수는 연산항 또는 표지 기호(label)로 사용가능, 명령어의 연산항 또는 표지 기호로써 사용할 수 있는지의 여부를 결정)
* 인수 표시 기호(인수를 매크로 정의 내에서 구분할 수 있도록 적당한 기호를 정의함)
2. 자료구조
1) 가정 : 이중패스 알고리즘 사용(매크로 프로세서는 입력 문장을 두 번의 패스에 걸쳐서 2회 검색한다. 패스1 : 매크로 정의 부분을 찾아 정의 내용을 저장, 패스2 : 매크로 호출을 찾음. 이때 정의되어있지 않은 매크로를 호출하는 경우 확장이 불가능하고, 오류 처리 과정을 밟게 된다.
2) 이중 패스의 기능
패스 1 : 프로그램 내의 모든 명령어를 조사, 매크로 정의 부분을 빠짐없이 매크로 정의표(MDT : Macro Definition Table) 내에 저장. 매크로 정의표에 따라 매크로 이름표(MNT : Macro Name Table)도 이때 작성. 이름표는 꼭 별도로 작성될 필요는 없으나, 매크로 이름을 비교하여 빠르게 검색하는 데 유용하게 쓰이며 별도의 공간(메모리)이 필요하다.
패스 2 : 모든 코드를 검색하면서 매크로 이름 형식으로 쓰여진 각 매크로 호출을 매크로이름표(MNT)와 매크로정의표(MDT)를 조사, 참조하여 적당한 블록으로 치환함
3) 이중 패스의 데이터 베이스
형식인수표(FAT) 매크로 확장시 간단하게 인수 치환을 하기 위해 사용한다. 매크로 정의 내의 인수를 매크로 정의 줄에 나타난 위치 값으로 치환하여 표시한다.
매크로이름표(MNT)와 매크로정의표(MDT)는 전체 프로그램에서 1개씩 만들어짐, 형식인수표(FAT)와 실인수표(AAT)는 매크로 정의마다 1개씩 만들어짐
Q. 인터넷 포털에 올리는 특정 댓글의 공감 수를 인위적으로 늘리는데 “매크로” 라는 프로그램이 사용된 것으로 알려지면서 이를 걸러내지 못한 포털 사업자들이 곤혹스러워했다. 그러나 포털들이 반복적 댓글이나 클릭 수를 조작한 IP를 차단, 필터링을 강화하면서 점점 사라지기 시작했다. 여기에서 매크로는 무엇인가요??
매크로란 자주 사용하는 여러 개의 명령어를 묶어서 하나의 키 입력 동작으로 만든 것을 매크로라고 합니다. 여러 번 해야 하는 일을 간단하게 수행하기 위하여 사용하기도 하지만 문서 안의 같은 문자열을 한꺼번에 변경할 때도 사용됩니다. 이렇듯 일련의 작업을 수행하기 위해 주작자가 매번 명령을 입력해 주지 않고 특정한 매크로 기능을 가진 키를 눌러줌으로써 자동으로 실행시키는 기능을 매크로 기능이라고 합니다.
Quiz 01매크로 프로세서에서 이중 패스 방법을 사용하는 이유는 전향 참조 방식을 허용하기 때문이다.
- 1 O
- 2 X
정답 :1
해설 :매크로 프로세서의 참조 방식은 전향 참조와 후향 참조로 구성되어 있다. 매크로 프로세서에서 이중 패스를 사용하는 것은 어떤 기호가 정의되지 않은 상태에서 기호를 사용하는 전향 참조를 허용하기 때문이다.
Quiz 02다음 중 어셈블리어를 확장하기 위한 기본적인 매크로 기능에 해당하지 않는 것은?
- 1 매크로 인수 정의
- 2 매크로 인수 해석
- 3 조건부 매크로
- 4 매크로 내 매크로 호출
정답 :2
해설 :기본 적인 매크로 기능으로는 매크로 인수 정의, 조건부 매크로, 매크로 내 매크로 호출, 매크로 내 매크로 정의, 반복 기능 매크로이다.
Quiz 03매크로 설계 시 기본 적인 매크로 기능에 해당하지 않는 것은?
- 1 매크로 정의 인식
- 2 매크로 정의 저장
- 3 매크로 내 반복 기능
- 4 매크로 호출 확장과 인수 치환
정답 :3
해설 :매크로 설계 시 기본 4가지 기능은 매크로 정의 인식, 정의 저장, 호출 인식, 호출 확장과 인수 치환이다.
학습정리
1. 설계 시 고려사항
- 매크로 프로세서란 매크로 정의에 따라 프로그램 내에서 매크로가 발견(호출)되면, 발견된 모든 실제 코드를 치환하여 주는 기능을 가진 사진의 고유한 언어를 가진 별도의 언어처리기이다. 매크로가 정의된 원시 프로그램을 입력 받아 매크로가 확장된 원시 프로그램을 출력으로 내보낸다.
- 어셈블리어를 확장하기 위해서 기본적인 매크로 기능은 매크로 인수 정의, 조건부 매크로 내 매크로 호출, 매크로 내 매크로 정의, 반복 기능 매크로이다.
- 매크로 프로세서는 이중 패스 방법을 사용한다. 전향 참조 방식을 허용하기 때문으로 참조 방식에는 전향 참조, 후향 참조가 있다.
- 매크로 프로세서가 해야 될 기본적인 작업은 매크로 정의 인식, 매크로 정의 저장, 매크로 호출 인식, 매크로 호출 확장과 인수 치환이다.
- 매크로 명령어 인수에 관하여 매크로 프로세서의 설계자는 인수의 사용 위치를 설정하고, 인수 표시 기호를 정의해야 한다.
2. 자료구조
- 가정은 이중 패스 알고리즘을 사용하고, 매크로 프로세서는 입력 문장을 두 번의 패스에 걸쳐서 2회 검색한다. 이때 정의되어 있지 않은 매크로를 호출하는 경우에는 확장이 불가능하고, 오류 처리 과정을 밝게 된다.
- 패스 1
- ① 프로그램 내의 명령어를 조사한다. ② 매크로 정의 부분을 빠짐없이 매크로 정의표 내에 저장한다. ③ 매크로 정의표에 따라 매크로 이름표도 이때 작성한다.
- 패스 1의 데이터베이스는 입력된 원시 프로그램, 매크로 정의표(MDT), 매크로 정의표 계수기(MDTC), 매크로 이름표(MNT), 매크로 이름표 계수기(MNTC), 형식 인수표와 스택, 실인수의 개수이다.
- 패스 2
- ① 모든 코들 검색하면서 ② 매크로 이름 형식으로 쓰여진 각 매크로 호출을 매크로이름표(MNT)와 매크로 정의표(MDT)를 조사, 참조하여 적당한 블록으로 치환한다. ③ 매크로 이름표(MNT)는 꼭 별도로 작성되어야 할 필요는 없으나 매크로 이름을 비교하는데 유용하게 쓰인다.
- 패스 2의 데이터베이스는 입력된 원시 프로그램, 매크로 정의표, 매크로 이름표, 매크로 정의표 포인터, 실인수표이다.
- 각종 표의 구성과 형식으로는 형식 인수표(FAT), 실인수표(Actual Argument Table : AAT), 매크로 정의표(MDT), 매크로 이름표(MNT)가 있다.
'컴퓨터공학 > 시스템프로그래밍' 카테고리의 다른 글
시스템프로그래밍 10 - 1 어셈블러 개요 (0) | 2021.10.25 |
---|---|
시스템프로그래밍 9 - 2 매크로프로세서 설계 2 (0) | 2021.10.20 |
시스템프로그래밍 7 - 2 매크로의 기능 (0) | 2021.10.09 |
시스템프로그래밍 7 - 1 (0) | 2021.10.05 |
시스템프로그래밍 6 - 2 어셈블리어 간접 주소 지정 방식 2 (0) | 2021.10.04 |