58
Mi Jung Choi [email protected] Dept. of Computer Science 5 5 장 장장장 장장장장 장장 장 장장장 장장장장 장장

5 장 매크로 프로세서 설계

  • Upload
    zena

  • View
    458

  • Download
    1

Embed Size (px)

DESCRIPTION

5 장 매크로 프로세서 설계. 매크로의 개념과 역할 매크로 정의 형식과 예 매크로 호출과 확장 매크로프로세서와 번역기와의 관계 서브루틴과의 차이점. 제 5 장 학습내용. 매크로 인수 사용의 개념과 예 조건부 매크로 확장 매크로내의 매크로 호출과 정의 반복기능의 매크로. 제 5 장 학습내용. 매크로프로세서의 기능 이중패스 매크로프로세서의 개념 형식인수표와 실인수표의 형태 매크로정의표와 매크로이름표의 형태 이중패스 알고리즘의 흐름. 제 5 장 학습내용. 반복되는 명령들을 정의 - PowerPoint PPT Presentation

Citation preview

Mi Jung [email protected]

Dept. of Computer Science

55 장 매크로 프로세서 설계장 매크로 프로세서 설계

시스템 프로그래밍

제 제 5 5 장 학습내용장 학습내용

• 매크로의 개념과 역할

• 매크로 정의 형식과 예

• 매크로 호출과 확장

• 매크로프로세서와 번역기와의 관계

• 서브루틴과의 차이점

Page 2

시스템 프로그래밍

제 제 5 5 장 학습내용장 학습내용

• 매크로 인수 사용의 개념과 예

• 조건부 매크로 확장

• 매크로내의 매크로 호출과 정의

• 반복기능의 매크로

Page 3

시스템 프로그래밍

제 제 5 5 장 학습내용장 학습내용

• 매크로프로세서의 기능

• 이중패스 매크로프로세서의 개념

• 형식인수표와 실인수표의 형태

• 매크로정의표와 매크로이름표의 형태

• 이중패스 알고리즘의 흐름

Page 4

시스템 프로그래밍

매크로의 개념매크로의 개념

• 반복되는 명령들을 정의

• 매크로 호출에 의한 확장

• 확장은 매크로프로세서가 처리

• 대부분 어셈블리언어에서 사용

• 프로그램 작성의 용이성 제공

Page 5

시스템 프로그래밍

매크로프로세서 역할매크로프로세서 역할

• 매크로지시어는 어셈블리어 명령어의 일종

• 어셈블러에게 포함되거나 별개의 프로그램으로 제공

• 매크로 정의 형태는 시스템에 따라 다름

Page 6

시스템 프로그래밍

매크로 정의의 필요성매크로 정의의 필요성

• 예제 프로그램

ADD AX, DATA

ADD BX, DATA

ADD CX, DATA ...

ADD AX, DATA

ADD BX, DATA

ADD CX, DATA ...

DATA DW 5

Page 7

시스템 프로그래밍

매크로의 정의 형식매크로의 정의 형식

매크로이름 MACRO <파라메타 - 리스트>

.....

.....

ENDM

… 매크로 내용

Page 8

시스템 프로그래밍

매크로의 정의 예매크로의 정의 예

ADDATA MACRO …… 정의 시작

ADD AX, DATA

ADD BX, DATA

ADD CX, DATA

ENDM …… 정의 끝

… 매크로 내용

Page 9

시스템 프로그래밍

매크로 호출과 확장매크로 호출과 확장

• 매크로이름 <파라메타 - 리스트>

ADDATA

ADD AX, DATA

ADD BX, DATA

ADD CX, DATA

⇒⇒ ⇒⇒Page 10

시스템 프로그래밍

원시프로그램과 확장된 프로그램원시프로그램과 확장된 프로그램

ADDATA MACRO

ADD AX, DATA

ADD BX, DATA

ADD CX, DATA

ENDM

MAIN SEGMENT

ASSUME CS:NAIN,

DS:MAIN

...

MAIN SEGMENT ASSUME CS:NAIN, DS:MAIN ...

확장시 없어짐

Page 11

시스템 프로그래밍

원시프로그램과 확장된 프로그램원시프로그램과 확장된 프로그램

MOV AX, MAIN

MOV DS, AX

...

ADDATA

ADDATA

MOV AH, 4CH

INT 21H

MOV AX, MAIN MOV DS, AX ... ADD AX, DATA ADD BX, DATA ADD CX, DATA ADD AX, DATA ADD BX, DATA ADD CX, DATA MOV AH, 4CH INT 21H

Page 12

시스템 프로그래밍

원시프로그램과 확장된 프로그램원시프로그램과 확장된 프로그램

...

DATA DW 3

MAIN ENDS

END

......

DATA DW 3DATA DW 3

MAIN ENDS MAIN ENDS

ENDEND

Page 13

시스템 프로그래밍

매크로프로세서와 번역기매크로프로세서와 번역기

원시프로그램

컴파일러 또는 어셈블러

확장된 원시프로그램

매크로프로세서

번역된 목적 프로그램

Page 14

시스템 프로그래밍

서브루틴을 사용한 호출서브루틴을 사용한 호출

......

......

SUB PROCSUB PROC

RETRET ENDPENDP

SUB PROCSUB PROC

RETRET ENDPENDP

서브루틴 서브루틴 SUBSUB서브루틴 서브루틴 SUBSUB............

CALL SUBCALL SUB

MOV DS, AXMOV DS, AXMOV DS, AXMOV DS, AX

......

......

CALL SUBCALL SUB

......

......

주프로그램주프로그램주프로그램주프로그램

Page 15

시스템 프로그래밍

ADDATA MACRO

정의내용

ENDM

매크로의 정의와 호출매크로의 정의와 호출

...

확장내용...

...

확장된 주프로그램

확장내용

주프로그램

호출

호출

...

ADDATA

...

...

ADDATA

Page 16

시스템 프로그래밍

매크로 인수 사용의 개념매크로 인수 사용의 개념

• 매크로 정의시 형식인수 사용

• 매크로 호출시 실인수 사용

• 형식인수는 실인수로 치환됨

• 매크로의 정의와 호출시

여러개의 인수사용 가능

Page 17

시스템 프로그래밍

매크로의 호출과 인수의 사용매크로의 호출과 인수의 사용

• 예제 프로그램

입력된 원시프로그램

ADDATA1 MACRO ARG

ADD AX, ARG

ADD BX, ARG

ADD CX, ARG

ENDM

...

...

확장된 원시프로그램

Page 18

시스템 프로그래밍

매크로의 호출과 인수의 사용매크로의 호출과 인수의 사용

ADDATA1 DATA1ADDATA1 DATA1 ......

ADDATA1 DATA2ADDATA1 DATA2 ......

DATA1 DW 5DATA1 DW 5DATA2 DW 10DATA2 DW 10

ADD AX, DATA1ADD AX, DATA1 ADD BX, DATA1ADD BX, DATA1 ADD CX, DATA1ADD CX, DATA1 ...... ADD AX, DATA2ADD AX, DATA2 ADD BX, DATA2ADD BX, DATA2 ADD CX, DATA2ADD CX, DATA2 ......DATA1 DW 5DATA1 DW 5DATA2 DW 10DATA2 DW 10

Page 19

시스템 프로그래밍

여러개의 인수를 사용한 정의여러개의 인수를 사용한 정의

• 예제 프로그램

LOOP1 : ADD AX, DATA1

ADD BX, DATA2

ADD CX, DATA3

....

LOOP2 : ADD AX, DATA3

ADD BX, DATA2

ADD CX, DATA1

Page 20

시스템 프로그래밍

• 매크로의 정의

ADD2 MACRO LAB, ARG1, ARG2, ARG3

LAB : ADD AX, ARG1

ADD BX, ARG2

ADD CX, ARG3

ENDM

여러개의 인수를 사용한 정의여러개의 인수를 사용한 정의

Page 21

시스템 프로그래밍

• 매크로의 호출과 확장

ADD2 LOOP1, DATA1, DATA2, DATA3

LOOP1 : ADD AX, DATA1

ADD BX, DATA2

ADD CX, DATA3

⇒⇒

여러개의 인수를 사용한 정의여러개의 인수를 사용한 정의

Page 22

시스템 프로그래밍

조건적 지시어조건적 지시어

• 주어진 조건의 내용에 따라 프로그램 내의 특정부분을

수행 또는 건너 뜀

– 조건이 참이면 IF 와 ENDIF 사이의 명령어가 수행

• IF expression, IFE expression

– 조건결과가 0 이 아니면 IF 는 참

– 조건결과가 0 이면 IFE 는 참

Page 23

시스템 프로그래밍

조건적 지시어조건적 지시어

• IF1, IF2

– 어셈블러가 pass1 단계이면 IF1 은 참

– 어셈블러가 pass2 단계이면 IF2 은 참

• IFDEF symbol, IFNDEF symbol

– symbol 이 정의되어 있으면 IFDEF 는 참

– 그렇지 않으면 IFNDEF 가 참

• IFIDN[IFIDF] string1,string2

– 두 문자열의 값이 같으면 IFIDN 은 참

– 그렇지 않으면 IFIDF 가 참

Page 24

시스템 프로그래밍

조건부 매크로정의와 확장조건부 매크로정의와 확장

• 조건부 매크로 정의

VARY MACRO LAB, COUNT, ARG1, ARG2, ARG3

LAB : ADD AX, ARG1

IFE COUNT-1

EXITM

ENDIF

Page 25

시스템 프로그래밍

조건부 매크로정의와 확장조건부 매크로정의와 확장

ADD BX, ARG2

IFE COUNT-2

EXITM

ENDIF

ADD CX, ARG3

ENDM

Page 26

시스템 프로그래밍

• 매크로의 호출과 확장

VARY LOOP1, 2, DATA3, DATA2

LOOP2 : ADD AX, DATA3

ADD BX, DATA2

⇒⇒ ⇒⇒

조건부 매크로정의와 확장조건부 매크로정의와 확장

Page 27

시스템 프로그래밍

매크로내의 매크로 호출매크로내의 매크로 호출

• 매크로의 1 차 정의

ADD1 MACRO ARG

MOV AX, ARG

SHL AX, 1

ADD BX, AX

ENDM

Page 28

시스템 프로그래밍

매크로내의 매크로 호출매크로내의 매크로 호출

• 매크로의 2 차 정의

ADDS MACRO ARG1, ARG2

ADD1 ARG1

ADD1 ARG2

ENDM

Page 29

시스템 프로그래밍

매크로내의 매크로 호출매크로내의 매크로 호출

• 매크로의 확장

ADDS DATA1, DATA2

ADD1 DATA1

ADD1 DATA2

⇒⇒ ⇒⇒⇒⇒ ⇒⇒

Page 30

시스템 프로그래밍

매크로내의 매크로 호출매크로내의 매크로 호출

MOV AX, DATA1

SHL AX, 1

ADD BX, AX

MOV AX, DATA2

SHL AX, 1

ADD BX, AX

⇒⇒ ⇒⇒Page 31

시스템 프로그래밍

매크로내의 매크로 정의매크로내의 매크로 정의

• 이중 매크로 정의

DEFUN MACRO NAME

NAME MACRO ARG

PUSH ARG

CALL NAME

POP ARG

ENDM

ENDM

Page 32

시스템 프로그래밍

매크로내의 매크로 정의매크로내의 매크로 정의

• 매크로호출과 확장

DEFUN SIN

SIN AX

PUSH AX

CALL SIN

POP AX

⇒⇒ ⇒⇒Page 33

시스템 프로그래밍

REPT DirectiveREPT Directive

• This makes it possible for a single macro to create a large data structure

• repeats a block of statements based on a counter

REPT REPT expressionexpression

Statement-listStatement-list

ENDMENDM

Page 34

시스템 프로그래밍

반복기능의 매크로 정의반복기능의 매크로 정의

FACT MACRO VALU

MOV DL, 1

MOV AL, 1

REPT VALU

MUL DL

INC DL

ENDM

Page 35

시스템 프로그래밍

반복기능의 매크로 확장반복기능의 매크로 확장

FACT 2

MOV DL, 1

MOV AL, 1

MUL DL

INC DL

MUL DL

INC DL

⇒⇒ ⇒⇒Page 36

시스템 프로그래밍

매크로프로세서의 기능매크로프로세서의 기능

• 매크로 정의 인식

• 매크로 정의 저장

• 매크로 호출 인식

• 매크로 확장과 인수 치환

Page 37

시스템 프로그래밍

매크로프로세서의 자료구조매크로프로세서의 자료구조

• 매크로정의표 (MDT)

• 매크로이름표 (MNT)

• 매크로정의표 계수기 (MDTC)

• 매크로이름표 계수기 (MNTC)

• 형식인수표와 실인수표

Page 38

시스템 프로그래밍

원시 원시 프로그램프로그램원시 원시

프로그램프로그램

이중패스 알고리즘의 데이터베이스이중패스 알고리즘의 데이터베이스

• 이중패스는 전향참조를 위해 필요

• 패스 1 과 패스 2 로 구성

실인수표실인수표실인수표실인수표

패패스스 11

패패스스 11

패패스스 22

패패스스 22

형식인수표형식인수표형식인수표형식인수표매크로매크로정의표정의표

++계수기계수기

매크로매크로정의표정의표

++계수기계수기

매크로매크로이름표이름표

++계수기계수기

매크로매크로이름표이름표

++계수기계수기

확장된확장된프로그램프로그램확장된확장된

프로그램프로그램

Page 39

시스템 프로그래밍

형식인수표의 형태형식인수표의 형태

• ADD2 MACRO, LAB, ARG1, ARG2, ARG3

형식인수의 이름형식인수의 이름

LAB LAB

ARG1ARG1

ARG2ARG2

ARG3ARG3

형식인수의 이름형식인수의 이름

LAB LAB

ARG1ARG1

ARG2ARG2

ARG3ARG3

색인 번호색인 번호

#0#0

#1#1

#2#2

#3#3

색인 번호색인 번호

#0#0

#1#1

#2#2

#3#3

Page 40

시스템 프로그래밍

실인수표의 형태실인수표의 형태

• ADD2 LOOP1, DATA1, DATA2, DATA3

색인 번호색인 번호

#0#0

#1#1

#2#2

#3#3

색인 번호색인 번호

#0#0

#1#1

#2#2

#3#3

실인수의 값실인수의 값

LOOP1LOOP1

DATA1DATA1

DATA2DATA2

DATA3DATA3

실인수의 값실인수의 값

LOOP1LOOP1

DATA1DATA1

DATA2DATA2

DATA3DATA3

Page 41

시스템 프로그래밍

문 장문 장......ADD2 MACRO LAB ARG1, ARG2, ARG3 ADD2 MACRO LAB ARG1, ARG2, ARG3 #0 ADD AX, #1#0 ADD AX, #1 ADD BX, #2ADD BX, #2 ADD CX, #3ADD CX, #3 ENDMENDM

문 장문 장......ADD2 MACRO LAB ARG1, ARG2, ARG3 ADD2 MACRO LAB ARG1, ARG2, ARG3 #0 ADD AX, #1#0 ADD AX, #1 ADD BX, #2ADD BX, #2 ADD CX, #3ADD CX, #3 ENDMENDM

매크로정의표매크로정의표 (MDT)(MDT) 의 의 형태형태

색인색인......15151616171718181919......

색인색인......15151616171718181919......

Page 42

시스템 프로그래밍

매크로이름표매크로이름표 (MNT)(MNT) 의 의 형태형태

색인색인......

33

......

색인색인......

33

......

매크로 이름매크로 이름......

ADD2ADD2

......

매크로 이름매크로 이름......

ADD2ADD2

......

MDT MDT 색인색인......

1515

......

MDT MDT 색인색인......

1515

......

Page 43

시스템 프로그래밍

패스 1 끝

MDTC ← 1, MNTC ← 1

패스 1 시작

입력된 원시프로그램의 다음 줄을 읽는다 .

MACRO지시어 ?

패스 2 를위해 출력

아니오아니오

매크로의 이름과 MDTC의

현재값을 MNT 의MNTC 행에 기록한다 .

END지시어 ?

패스패스 11 의 흐름의 흐름

Page 44

시스템 프로그래밍

다음 줄을 읽는다

MDTC ← MDTC+1

매크로 이름을 MDT의

MDTC 행에 기록

MNTC ← MNTC+1

패스 1 의 형식인수표 작성

문장속의 인수를 색인기호로 치환

아니오예 ENDM지시어 ?

이 줄을 MDT의

MDTC 행에 기록

MDTC ← MDTC+1

ENDM 을MDT 에

기록

MDTC ← MDTC+1

Page 45

시스템 프로그래밍

procedure pass1

MDTC ← 1;

MNTC ← 1;

repeat

원시프로그램에서 다음 줄을 읽음 ;

if(MACRO 지시어 ) {

매크로 이름과 MDTC 의 값을 MNT 의 MNTC 번째 행에 기록 ;MNTC ← MNTC + 1;형식인수표 작성 ( 형식인수에 색인번호를 붙임 );매크로 이름이 있는 줄을 MDT 의 MDTC 행에 기록 ;MDTC ← MDTC + 1;

패스패스 1 1 알고리즘알고리즘

Page 46

시스템 프로그래밍

repeat 다음 줄을 읽는다 ; 문장속의 형식인수를 색인번호로 치환 ;

이 줄을 MDT 의 MDTC 행에 기록 ; MDTC ← MDTC + 1; until(ENDM 지시어 ); ENDM 을 MDT 의 MDTC 행에 기록 ; MDTC ← MDTC + 1; }else { 패스 2 를 위해 출력 ; if(END 지시어 ) then 패스 1 끝 ; } foreverend procedure;

Page 47

시스템 프로그래밍

패스패스 1 1 출력의 다음 출력의 다음 줄을 읽는다줄을 읽는다패스패스 1 1 출력의 다음 출력의 다음 줄을 읽는다줄을 읽는다

패스패스 22 시작시작패스패스 22 시작시작

명령어 검색명령어 검색(MNT (MNT 이용이용 ))명령어 검색명령어 검색(MNT (MNT 이용이용 ))

매크로매크로이름 발견이름 발견 ??매크로매크로이름 발견이름 발견 ??

패스패스 22 끝끝패스패스 22 끝끝

읽은 명령어 읽은 명령어 출력출력읽은 명령어 읽은 명령어 출력출력

예예예예

아니오아니오아니오아니오아니오아니오아니오아니오

예예예예

MDTP←MNT MDTP←MNT 안의 안의

MDT MDT 색인값색인값

MDTP←MNT MDTP←MNT 안의 안의

MDT MDT 색인값색인값

ENDEND지시어지시어 ??ENDEND지시어지시어 ??

패스패스 22 의 흐름의 흐름

Page 48

시스템 프로그래밍

MDT 로부터 MDTP 행을 읽어 온다

실인수표 작성

MDTP ← MDTP+1

아니오

예 ENDM지시어 ?

명령어출력

실인수표를 참조하여 문장내의 인수번호를 실인수로 치환

Page 49

시스템 프로그래밍

procedure pass2

repeat

패스 1 의 출력에서 다음 명령어를 읽는다 ;

읽은 명령어를 MNT 의 각 행과 비교 ;

if( 매크로 호출 ?) {

MDTP ← MNT 내의 MDT 색인값 ;

실인수표 작성

( 실인수에 색인번호 붙임 );

repeat

패스패스 2 2 알고리즘알고리즘

Page 50

시스템 프로그래밍

MDTP ← MDTP + 1;

MDT 에서 MDTP 행의 문장을 읽는다 ;

문장내의 인수 색인 번호를

실인수로 치환 ;

확장된 명령어를 출력 ;

until(ENDM 지시어 ); }

else {

읽은 명령어 출력 :

if(END 지시어 ?) then 패스 2 끝 ; }

forever

end procedure;

Page 51

시스템 프로그래밍

EXPAND EXPAND 패스패스 2 2 에서 사용하는 스택 구조에서 사용하는 스택 구조

-1-1……

S(sp)S(sp)S(sp+1)S(sp+1)S(sp+2)S(sp+2)S(sp+3)S(sp+3)……S(sp+N+1)S(sp+N+1)

다음 프레임이 사용할 장소다음 프레임이 사용할 장소

N-1N-1 번째 인자번째 인자

11 번째 인자번째 인자……

00 번째 인자번째 인자이 프래임에서의 이 프래임에서의 MDTPMDTP바로 이전 스택 프래임의 출발 위치 포인터바로 이전 스택 프래임의 출발 위치 포인터

이전의 스택 프레임들이전의 스택 프레임들

(sp+2)+(N-1)(sp+2)+(N-1)

sp+3sp+3sp+2sp+2sp+1sp+1spsp

스택 인덱스 내용 설 명

N : 매크로에 넘어오는 argument 수sp : 스택 포인터의 현재값 S(m) : 스택의 m 번째 내용

매크로 호출인자매크로 호출인자리스트배열리스트배열

Page 52

시스템 프로그래밍

시 작

SP 1

매크로 호출 ?

S(SP) -1S(SP+1) MNT 의 MDT index

Pass1 의 출력에서 다음 명령어를 읽는다 .

실인수를 S(SP+2), … S(SP+N+1) 에 대입

S(SP+1)S(SP+1)+1

MDT 에서 S(SP+1) 행을 읽음

S(SP+2), … S(SP+N+1) 를 이용하여 인수대치

명령어 완성

S(SP+1) S(SP+1) + 1

ENDM ?

매크로호출 ?

S(SP+N+2) SPSP SP+N+2S(SP+1)MNT 의 MDT index

실인수를 S(SP+2), …S(SP+N+1) 에 대입

S(SP+1)S(SP+1)+1

END 지시어 ? 끝

SP S(SP)

No

No

No

No

No Yes

Yes

Yes

YesSP = -1 ?

Yes

확장된 명령어 출력명령어 출력

No

Page 53

시스템 프로그래밍

EXPAND EXPAND 패스 패스 2 2 알고리즘알고리즘

sp 1;

N 0;

Repeat // 매크로호출패스 1 의 출력에서 다음 명령어를 읽는다 ;

if ( 매크로호출 )

{

s(sp) -1;

s(sp+1) MNT 에서 MDT index;

실인수를 s(sp+2), … , s(sp+N+1) 에 대입 ;

s(sp+1) s(sp+1) + 1;

Page 54

시스템 프로그래밍

repeat{ // 매크로 내 매크로 호출MDT 에서 s(sp+1) 행을 읽음 ;s(sp+2), .. S(sp+N+1) 을 이용하여 인수대치 ;명령어 완성 ;s(sp+1) s(sp+1) + 1;if (ENDM) sp s(sp); if ( 매크로호출 ){

s(sp+N+2) sp;sp sp+N+2;s(sp+1) MNT 의 MDT index;실인수를 s(sp+2), … s(sp+N+1) 에 대입 ;s(sp+1) s(sp+N+1);

}else{ 확장된 명령어 출력 ;}

until (s(sp) != -1) // 매트로 내 매트로 호출else{ 읽은 명령어 출력 ;}}

Until (Not END 지시어 ) // 초기 매크로 호출End Expand 매크로 Procedure;

Page 55

시스템 프로그래밍

제 제 5 5 장 요약장 요약

• 매크로와 매크로프로세서의 개념정립

• 매크로 정의 , 호출 , 확장을 이해

• 매크로프로세서와 번역기와의 관계 이해

• 매크로와 서브루틴과의 차이점을 이해

Page 56

시스템 프로그래밍

제 제 5 5 장 요약장 요약

• 매크로 인수의 사용방법

• 조건부 매크로 정의와 호출을 이해

• 매크로내의 매크로 정의와

호출을 이해

Page 57

시스템 프로그래밍

제 제 5 5 장 요약장 요약

• 매크로프로세서의 기능과 자료구조 이해

• 이중패스 알고리즘의 데이터베이스 이해

• 형식인수표와 실인수표의 형태를 이해

• 매크로정의표와 매크로이름표의 형태를 이해

• 매크로프로세서의 패스 1 과 패스 2 의 흐름을 이해

Page 58