컴퓨터과학

매크로에 관한 통찰

영웅*^%&$ 2018. 10. 8. 15:10
728x90

매크로는 간단히 말해서 계속해서 반복적으로 사용되어지는 명령어를 정리해서 반복적으로 간단히 사용할 수 있도록 정의한 것입니다

 

원시프로그램은 매트로 프로세서를 거쳐서(그러면 확장된 매크로프로그램이 됩니다) 컴파일러, 어셈블러를 거쳐서 목적프로그램으로 변환되어집니다

 

 

TITLE PGM1_1: SAME PROGRAM        

 .MODEL SMALL        

 .STACK   100H        

 .DATA        

 A DW     100        

 B DW     20        

 SUM DW   ?        

 

 .CODE        

 MAIN     PROC        

 ;initialize DS        

     MOV  AX,@DATA        

     MOV  DS,AX        

 ;add the numbers        

     MOV  AX,A      ;AX has A        

     ADD  AX,B      ;AX has A+B        

     MOV  SUM,AX    ;SUM = A+B        

 ;exit to DOS        

     MOV  AX,4C00H        

     INT  21H        

 MAIN ENDP        

 END  MAIN 

 

이 프로그램은 그냥 어셈블리어 샘플 프로그래밍입니다

 

ADDATA MACRO

ADD AX, DATA //매크로정의

ADD BX, DATA

ADD CX, DATA

ENDM

 

MAIN SEGMENT

ASSUME CS:NAIN,DS:MAIN

 

MOV AX, MAIN

MOV DS, AX

...

ADDATA

ADDATA //매크로호출

 

MOV AH, 4CH

INT 21H

DATA DW 3

MAIN ENDS

END MAIN

 

 

ADD AX, DATA

MAIN SEGMENT

ASSUME CS:NAIN,DS:MAIN

 

MOV AX, MAIN

MOV DS, AX

...

ADDATA1 DATA1

ADDATA1 DATA2

 

MOV AH, 4CH

INT 21H

...

DATA1 DW 10

DATA2 DW 20

MAIN ENDS

 

ADDATA1 MACRO ARG

ADD AX, ARG

ADD BX, ARG

ADD CX, ARG

ENDM

END MAIN ADD BX, DATA

ADD CX, DATA

MOV AH, 위으4CH

INT 21H

MAIN SEGMENT

ASSUME CS:NAIN, DS:MAIN

...

MOV AX, MAIN

MOV DS, AX

...

ADD AX, DATA1

ADD BX, DATA1

ADD CX, DATA1

 

ADD AX, DATA2

ADD BX, DATA2

ADD CX, DATA2

MOV AH, 4CH

INT 21H

...

DATA1 DW 10

DATA1 DW 20

MAIN ENDS

END MAIN ...

DATA DW 3

MAIN ENDS

정의된 매크로 프로그램이 확장된 것입니다

 

ADD1 MACRO ARG

ADD AX, ARG

SHL AX, 1

ADD BX, AX

ENDM

 

ADDS MACRO ARG1, ARG2

ADD1 ARG1

ADD1 ARG2

ENDM

 

MAIN SEGMENT

ASSUME CS:NAIN,DS:MAIN

 

MOV AX, MAIN

MOV DS, AX

...

ADDS DATA1, DATA2

...

DATA1 DW 10

DATA2 DW 20

MAIN ENDS

END MAIN

가장 기본적인 매크로 정의가 이런 식으로 있다고 보았을 때

 

ADD1 MACRO ARG

ADD AX, ARG

SHL AX, 1

ADD BX, AX

ENDM

 

ADDS MACRO ARG1, ARG2

ADD1 ARG1

ADD1 ARG2

ENDM

 

MAIN SEGMENT

ASSUME CS:NAIN,DS:MAIN

 

MOV AX, MAIN

MOV DS, AX

...

ADDS DATA1, DATA2

...

DATA1 DW 10

DATA2 DW 20

MAIN ENDS

END MAIN

이건 1단계 매크로 확장입니다

 

ADD1 MACRO ARG

ADD AX, ARG

SHL AX, 1

ADD BX, AX

ENDM

 

ADDS MACRO ARG1, ARG2

ADD1 ARG1

ADD1 ARG2

ENDM

 

MAIN SEGMENT

ASSUME CS:NAIN,DS:MAIN

 

MOV AX, MAIN

MOV DS, AX

...

ADDS DATA1, DATA2

...

DATA1 DW 10

DATA2 DW 20

MAIN ENDS

END MAIN

이건 2단계 매크로 확장입니다

 

ADD1 MACRO ARG

ADD AX, ARG

SHL AX, 1

ADD BX, AX

ENDM

 

ADDS MACRO ARG1, ARG2

ADD1 ARG1

ADD1 ARG2

ENDM

 

MAIN SEGMENT

ASSUME CS:NAIN,DS:MAIN

 

MOV AX, MAIN

MOV DS, AX

...

ADDS DATA1, DATA2

...

DATA1 DW 10

DATA2 DW 20

MAIN ENDS

END MAIN

이건 3단계 매크로 확장입니다

 

이런 식으로 정의 인식, 정의 저장, 호출 인식, 확장과 인수 치환 등의 과정을 거쳐서 매크로가 활용되어집니다

그 중에서 정의 인식, 정의 저장은 1 PASS PROCESSING 호출 인식, 확장과 인수 치환은 2 PASS PROCESSING 에 속해서 총 두 가지 패스 알고리즘을 통해서 진행됩니다 그래서 이 과정을 이중패스알고리즘이라고 합니다

 

 

ADD1 MACRO ARG

ADD AX, ARG

SHL AX, 1

ADD BX, AX

ENDM

 

ADDS MACRO ARG1, ARG2

ADD1 ARG1

ADD1 ARG2

ENDM

 

MAIN SEGMENT

ASSUME CS:NAIN,DS:MAIN

 

MOV AX, MAIN

MOV DS, AX

...

ADDS DATA1, DATA2

...

DATA1 DW 10

DATA2 DW 20

MAIN ENDS

END MAIN

 

 


728x90

'컴퓨터과학' 카테고리의 다른 글

알파고는 계단을 걷지 못한다  (0) 2018.11.14
어셈블리어에 관한 통찰   (0) 2018.10.08
간단한 데이터 압축   (0) 2018.10.08
인공지능의 사기적인 능력  (0) 2018.08.27
빅데이터   (0) 2018.03.07