5
This presentation is the property of its rightful owner.
Sponsored Links
1 / 58

5 장 매크로 프로세서 설계 PowerPoint PPT Presentation


  • 416 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

5 장 매크로 프로세서 설계

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


5

5장 매크로 프로세서 설계


5

매크로의 개념과 역할

매크로 정의 형식과 예

매크로 호출과 확장

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

서브루틴과의 차이점

제 5 장 학습내용


5

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

조건부 매크로 확장

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

반복기능의 매크로

제 5 장 학습내용


5

매크로프로세서의 기능

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

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

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

이중패스 알고리즘의 흐름

제 5 장 학습내용


5

반복되는 명령들을 정의

매크로 호출에 의한 확장

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

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

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

매크로의 개념


5

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

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

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

매크로프로세서 역할


5

예제 프로그램

ADD AX, DATA

ADD BX, DATA

ADD CX, DATA

...

ADD AX, DATA

ADD BX, DATA

ADD CX, DATA

...

DATA DW 5

매크로 정의의 필요성


5

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

.....

.....

ENDM

매크로의 정의 형식

… 매크로 내용


5

ADDATA MACRO ……정의 시작

ADD AX, DATA

ADD BX, DATA

ADD CX, DATA

ENDM ……정의 끝

매크로의 정의 예

…매크로 내용


5

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

ADDATA

ADD AX, DATA

ADD BX, DATA

ADD CX, DATA

매크로 호출과 확장


5

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

...


5

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


5

...

DATA DW 3

MAIN ENDS

END

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

...

DATA DW 3

MAIN ENDS

END


5

매크로프로세서와 번역기

원시

프로그램

매크로

프로세서

확장된 원시

프로그램

컴파일러 또는

어셈블러

번역된 목적

프로그램


5

서브루틴을 사용한 호출

주프로그램

MOV DS, AX

서브루틴 SUB

.

.

.

SUB PROC

RET

ENDP

CALL SUB

.

.

.

.

.

.

CALL SUB

.

.

.


5

매크로의 정의와 호출

확장된 주프로그램

주프로그램

.

.

.

.

.

.

ADDATA

MACRO

정의내용

ENDM

호출

확장내용

ADDATA

.

.

.

.

.

.

확장내용

ADDATA

호출

.

.

.

.

.

.


5

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

매크로 호출시 실인수 사용

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

매크로의 정의와 호출시

여러개의 인수사용 가능

매크로 인수 사용의 개념


5

예제 프로그램

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

입력된 원시프로그램

ADDATA1 MACRO ARG

ADD AX, ARG

ADD BX, ARG

ADD CX, ARG

ENDM

...

확장된 원시프로그램

...


5

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

ADD AX, DATA1

ADD BX, DATA1

ADD CX, DATA1

...

ADD AX, DATA2

ADD BX, DATA2

ADD CX, DATA2

...

DATA1 DW 5

DATA2 DW 10

ADDATA1 DATA1

...

ADDATA1 DATA2

...

DATA1 DW 5

DATA2 DW 10


5

예제 프로그램

LOOP1 : ADD AX, DATA1

ADD BX, DATA2

ADD CX, DATA3

....

LOOP2 : ADD AX, DATA3

ADD BX, DATA2

ADD CX, DATA1

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


5

매크로의 정의

ADD2 MACRO LAB, ARG1, ARG2, ARG3

LAB : ADD AX, ARG1

ADD BX, ARG2

ADD CX, ARG3

ENDM

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


5

매크로의 호출과 확장

ADD2 LOOP1, DATA1, DATA2, DATA3

LOOP1 : ADD AX, DATA1

ADD BX, DATA2

ADD CX, DATA3

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


5

주어진 조건의 내용에 따라 프로그램 내의 특정부분을 수행 또는 건너 뜀

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

IF expression, IFE expression

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

조건결과가 0이면 IFE는 참

조건적 지시어


5

IF1, IF2

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

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

IFDEF symbol, IFNDEF symbol

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

그렇지 않으면 IFNDEF가 참

IFIDN[IFIDF] string1,string2

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

그렇지 않으면 IFIDF 가 참

조건적 지시어


5

조건부 매크로 정의

VARY MACRO LAB, COUNT, ARG1, ARG2, ARG3

LAB : ADD AX, ARG1

IFE COUNT-1

EXITM

ENDIF

조건부 매크로정의와 확장


5

ADD BX, ARG2

IFE COUNT-2

EXITM

ENDIF

ADD CX, ARG3

ENDM

조건부 매크로정의와 확장


5

매크로의 호출과 확장

VARY LOOP1, 2, DATA3, DATA2

LOOP2 : ADD AX, DATA3

ADD BX, DATA2

조건부 매크로정의와 확장


5

매크로의 1차 정의

ADD1 MACRO ARG

MOV AX, ARG

SHL AX, 1

ADD BX, AX

ENDM

매크로내의 매크로 호출


5

매크로의 2차 정의

ADDS MACRO ARG1, ARG2

ADD1 ARG1

ADD1 ARG2

ENDM

매크로내의 매크로 호출


5

매크로의 확장

ADDS DATA1, DATA2

ADD1 DATA1

ADD1 DATA2

매크로내의 매크로 호출


5

MOV AX, DATA1

SHL AX, 1

ADD BX, AX

MOV AX, DATA2

SHL AX, 1

ADD BX, AX

매크로내의 매크로 호출


5

이중 매크로 정의

DEFUN MACRO NAME

NAME MACRO ARG

PUSH ARG

CALL NAME

POP ARG

ENDM

ENDM

매크로내의 매크로 정의


5

매크로호출과 확장

DEFUN SIN

SIN AX

PUSH AX

CALL SIN

POP AX

매크로내의 매크로 정의


Rept 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 Directive

REPT expression

Statement-list

ENDM


5

FACT MACRO VALU

MOV DL, 1

MOV AL, 1

REPT VALU

MUL DL

INC DL

ENDM

반복기능의 매크로 정의


5

FACT 2

MOV DL, 1

MOV AL, 1

MUL DL

INC DL

MUL DL

INC DL

반복기능의 매크로 확장


5

매크로 정의 인식

매크로 정의 저장

매크로 호출 인식

매크로 확장과 인수 치환

매크로프로세서의 기능


5

매크로정의표(MDT)

매크로이름표(MNT)

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

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

형식인수표와 실인수표

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


5

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

패스1과 패스2로 구성

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

실인수표

형식인수표

매크로

정의표

+

계수기

2

1

매크로

이름표

+

계수기

확장된

프로그램

원시

프로그램


5

ADD2 MACRO, LAB, ARG1, ARG2, ARG3

형식인수표의 형태

형식인수의 이름

LAB

ARG1

ARG2

ARG3

색인 번호

#0

#1

#2

#3


5

ADD2 LOOP1, DATA1, DATA2, DATA3

실인수표의 형태

색인 번호

#0

#1

#2

#3

실인수의 값

LOOP1

DATA1

DATA2

DATA3


5

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

문 장

.

.

.

ADD2 MACRO LAB ARG1, ARG2, ARG3

#0 ADD AX, #1

ADD BX, #2

ADD CX, #3

ENDM

색인

.

.

.

15

16

17

18

19

.

.

.


5

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

매크로 이름

.

.

.

ADD2

.

.

.

색인

.

.

.

3

.

.

.

MDT 색인

.

.

.

15

.

.

.


5

패스1의 흐름

패스1시작

MDTC ← 1, MNTC ← 1

입력된 원시프로그램의

다음 줄을 읽는다.

아니오

아니오

패스2를

위해 출력

MACRO

지시어?

END

지시어?

매크로의 이름과 MDTC의

현재값을 MNT의

MNTC행에 기록한다.

패스1끝


5

다음 줄을 읽는다

MNTC ← MNTC+1

패스1의

형식인수표 작성

문장속의 인수를

색인기호로 치환

매크로 이름을 MDT의

MDTC행에 기록

이 줄을 MDT의

MDTC행에 기록

MDTC ← MDTC+1

MDTC ← MDTC+1

아니오

ENDM을

MDT에 기록

ENDM

지시어?

MDTC ← MDTC+1


5

procedure pass1

MDTC ← 1;

MNTC ← 1;

repeat

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

if(MACRO 지시어) {

매크로 이름과 MDTC의 값을 MNT의 MNTC번째 행에 기록;

MNTC ← MNTC + 1;

형식인수표 작성 (형식인수에 색인번호를 붙임);

매크로 이름이 있는 줄을 MDT의 MDTC행에 기록;

MDTC ← MDTC + 1;

패스1 알고리즘


5

repeat

다음 줄을 읽는다;

문장속의 형식인수를 색인번호로 치환;

이 줄을 MDT의 MDTC행에 기록;

MDTC ← MDTC + 1;

until(ENDM 지시어);

ENDM을 MDT의 MDTC행에 기록;

MDTC ← MDTC + 1;

}

else {

패스2를 위해 출력;

if(END 지시어) then 패스1 끝;

}

forever

end procedure;


5

패스2의 흐름

패스2시작

패스1 출력의 다음

줄을 읽는다

명령어 검색

(MNT 이용)

아니오

END

지시어?

아니오

읽은 명령어

출력

매크로

이름 발견?

MDTP←MNT 안의

MDT 색인값

패스2끝


5

실인수표 작성

MDTP ← MDTP+1

MDT로부터 MDTP 행을 읽어 온다

ENDM

지시어?

아니오

명령어

출력

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


5

procedure pass2

repeat

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

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

if(매크로 호출?) {

MDTP ← MNT내의 MDT 색인값;

실인수표 작성

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

repeat

패스2 알고리즘


5

MDTP ← MDTP + 1;

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

문장내의 인수 색인 번호를

실인수로 치환;

확장된 명령어를 출력;

until(ENDM 지시어); }

else {

읽은 명령어 출력:

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

forever

end procedure;


Expand 2

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

스택 인덱스

내용

설 명

다음 프래임이 사용할 장소

(sp+2)+(N-1)

N-1번째 인자

S(sp+N+1)

매크로 호출인자

리스트배열

sp+3

1번째 인자

S(sp+3)

0번째 인자

sp+2

S(sp+2)

이 프래임에서의 MDTP

sp+1

S(sp+1)

sp

바로 이전 스택 프래임의 출발 위치 포인터

S(sp)

이전의 스택 프래임들

-1

N : 매크로에 넘어오는 argument수

sp : 스택 포인터의 현재값 S(m) : 스택의 m번째 내용


5

시 작

명령어 완성

SP  1

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

Yes

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

ENDM ?

매크로 호출 ?

No

SP S(SP)

SP = -1 ?

매크로호출 ?

No

No

Yes

Yes

S(SP)  -1

S(SP+1)  MNT의 MDT index

S(SP+N+2)  SP

SP  SP+N+2

S(SP+1)MNT의 MDT index

확장된

명령어 출력

명령어 출력

실인수를 S(SP+2), …

S(SP+N+1)에 대입

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

No

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

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

No

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

END지시어?

No

Yes

Yes

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


Expand 21

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;

EXPAND 패스 2 알고리즘


5

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;


5

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

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

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

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

제 5 장 요약


5

매크로 인수의 사용방법

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

매크로내의 매크로 정의와

호출을 이해

제 5 장 요약


5

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

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

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

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

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

제 5 장 요약


  • Login