1 / 41

매크로 프로세서 설계

매크로 프로세서 설계. 시스템 프로그래밍 - Lecture #5. 매크로 (Macro) 의 개념. 매크로 (Macro) 정의 새로운 명령어 정의 및 사용 반복되는 명령들을 하나의 새로운 명령어로 정의 새로운 기능을 정의하여 확장할 수 있는 기능을 제공 프로그램 작성의 용이성 제공 매크로 처리 매크로 호출 (Macro Call) 에 대한 소스 확장 매크로 확장 (Macro Expansion) 확장은 매크로프로세서가 처리 대부분 어셈블리언어에서 사용. 매크로프로세서 역할 (1).

shino
Download Presentation

매크로 프로세서 설계

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 매크로 프로세서 설계 시스템 프로그래밍 - Lecture #5 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  2. 매크로(Macro)의 개념 • 매크로(Macro) 정의 • 새로운 명령어 정의 및 사용 • 반복되는 명령들을 하나의 새로운 명령어로 정의 • 새로운 기능을 정의하여 확장할 수 있는 기능을 제공 • 프로그램 작성의 용이성 제공 • 매크로 처리 • 매크로 호출(Macro Call)에 대한 소스 확장 • 매크로 확장(Macro Expansion) • 확장은 매크로프로세서가 처리 • 대부분 어셈블리언어에서 사용 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  3. 매크로프로세서 역할(1) • 매크로 프로세서(Macro Processor) • 어셈블리 프로그램 내에서 정의된 매크로 호출에 대해 매크로 정의에 지정된 실제 코드로 확장하는 언어 처리기 • 일련의 프로그램 전처리기(Preprocessor) • 매크로 확장(Macro Expansion) • 어셈블러에 포함되거나 별도의 프로그램으로 제공 • 매크로 지시어는 어셈블리어 명령어의 하나로 처리하는 경우에 어셈블러에 포함되어 동작 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  4. 매크로 프로세서 역할(2) 원시 프로그램 매크로 프로세서 확장된 원시 프로그램 번역된 목적 프로그램 컴파일러 또는 어셈블러 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  5. 매크로 내용 실인자를 대치하여 프로그램 소스에 확장되는 부분 매크로의 정의(Macro Definition)(1) 매크로이름 MACRO<인수-리스트> ..... ..... ENDM 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  6. 매크로 정의(2) • 예제 프로그램 ADD AX, DATA ADD BX, DATA ADD CX, DATA ... ADD AX, DATA ADD BX, DATA ADD CX, DATA ... DATA DW 5 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  7. 매크로 정의(3) ADDATA MACRO ; 매크로 정의 시작 ADD AX, DATA ADD BX, DATA ADD CX, DATA ENDM ; 매크로 정의 끝 매크로 내용 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  8. 매크로 확장 매크로 호출과 확장 (1) 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 매크로 정의 매크로 호출 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  9. 매크로 호출과 확장 (2) MAIN SEGMENT ASSUME CS:NAIN, DS:MAIN ... 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 ... DATA DW 3 MAIN ENDS END MAIN 확장된 어셈블리 프로그램 매크로 확장 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  10. 매크로와 프로시저 (1) • 프로시저(Procedure) • 프로시저 호출 – 프로그램 실행 제어가 프로시저로 이동 주프로그램 MOV DS, AX 프로시저 SUB . . . SUB PROC RET ENDP CALL SUB . . . . . . CALL SUB . . . 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  11. 매크로와 프로시저 (2) • 매크로(Macro) • 매크로 호출 – 주프로그램에 대해 매크로 확장 확장된 주프로그램 주프로그램 ADDATA MACRO 정의내용 ENDM . . . . . . 호출 확장내용 ADDATA . . . . . . 확장내용 ADDATA 호출 . . . . . . 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  12. 매크로와 프로시저 (3) • 호출 처리 시간 • 프로시저는 실행 시간에 호출에 의해 프로시저로 분기하여 프로시저를 실행 • 매크로는 번역(어셈블러 또는 컴파일러) 시간에 호출에 대해 소스 확장 • 매크로와 프로시저의 time & space trade-off • 매크로의 반복 호출에 대해 매번 소스를 확장하기 때문에 프로그램 소스가 길어진다  기억장소 낭비 • 매크로 호출은 프로시저 호출에 의한 프로그램 분기가 발생하지 않기 때문에 실행 시간을 단축 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  13. 매크로 기능 (1) • 매크로 전향 참조 • 매크로 인자 사용 • 조건부 매크로 확장 • 매크로 내의 매크로 호출 • 매크로 내의 매크로 정의 • 반복 기능의 매크로 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  14. 2-pass scanning에 의한 매크로 처리를 요구 매크로 기능 (2) • 전향 참조(forward Reference)를 지원 - 매크로를 정의하기 전에 호출 가능 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 ADDATA MACRO ADD AX, DATA ADD BX, DATA ADD CX, DATA ENDM END 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  15. 매크로 기능 (3) – 매크로 인수 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 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 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  16. 매크로 기능 (4)– 매크로 내의 매크로 호출 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단계 매크로 확장 MAIN SEGMENT ASSUME CS:NAIN,DS:MAIN MOV AX, MAIN MOV DS, AX ... ADD1 DATA1 ADD1 DATA2 ... DATA1 DW 10 DATA2 DW 20 MAIN ENDS END MAIN 매크로 내의 매크로 호출 2단계 매크로 확장 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  17. 매크로 기능 (5)– 매크로 내의 매크로 호출 MAIN SEGMENT ASSUME CS:NAIN,DS:MAIN MOV AX, MAIN MOV DS, AX ... ADD AX, DATA1 SHL AX, 1 ADD BX, AX ADD1 DATA2 ... DATA1 DW 10 DATA2 DW 20 MAIN ENDS END MAIN 3단계 매크로 확장 MAIN SEGMENT ASSUME CS:NAIN,DS:MAIN MOV AX, MAIN MOV DS, AX ... ADD AX, DATA1 SHL AX, 1 ADD BX, AX ADD AX, DATA2 SHL AX, 1 ADD BX, AX ... DATA1 DW 10 DATA2 DW 20 MAIN ENDS END MAIN 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  18. 매크로 기능 (6) • 조건부 매크로 확장 • 교재, 예제 5-5 • 매크로 내의 매크로 정의 • 교재, 예제 5-7 • 반복 기능의 매크로 • 교재, 예제 5-8 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  19. Pass-1 Processing 2-Pass Macro Processing Pass-2 Processing 매크로 전향 참조를 지원 매크로 프로세서의 기능 • 매크로 정의 인식 • 매크로 정의 저장 • 매크로 호출 인식 • 매크로 확장과 인수 치환 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  20. 실인수표 형식인수표 매크로 정의표 + 계수기 패스-2 원시 프로그램 패스-1 매크로 이름표 + 계수기 확장된 프로그램 이중-패스 매크로 프로세서와 데이터 구조 • 이중-패스 알고리즘은 전향참조를 지원하기 위해 필요 • 패스-1 알고리즘과 패스-2 알고리즘으로 구성 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  21. 매크로프로세서의 자료구조(1) • 매크로 정의표(MDT) • 매크로 이름표(MNT) • 매크로 정의표 계수기(MDTC) • 매크로 이름표 계수기(MNTC) • 형식인수표와 실인수표 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  22. 매크로프로세서의 자료구조(2) • 테스트 프로그램 ADD2 MACRO LAB, ARG1, ARG2, ARG3 LAB: ADD AX, ARG1 ADD BX, ARG2 ADD CX, ARG3 ENDM MAIN SEGMENT ASSUME CS:MAIN, DS:MAIN … ADD2 LOOP1, DATA1, DATA2, DATA3 …. MAIN ENDS END MAIN 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  23. 형식인수의 이름 LAB ARG1 ARG2 ARG3 색인 번호 #0 #1 #2 #3 형식인수표의 구조 ADD2 MACRO LAB, ARG1, ARG2, ARG3 …. ENDM Pass-1 단계에서 생성 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  24. 색인 번호 #0 #1 #2 #3 실인수의 값 LOOP1 DATA1 DATA2 DATA3 실인수표의 구조 … ADD2 LOOP1, DATA1, DATA2, DATA3 ... Pass-2 단계에서 생성 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  25. 문 장 . . . ADD2 MACRO LAB ARG1, ARG2, ARG3 #0 ADD AX, #1 ADD BX, #2 ADD CX, #3 ENDM 색인 . . . 15 16 17 18 19 . . . 매크로 정의표(MDT)의 구조 매크로 정의표 계수기 15 매크로 정의표 계수기 20 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  26. 매크로 이름 . . . ADD2 . . . 색인 . . . 3 . . . MDT 색인 . . . 15 . . . 매크로이름표(MNT)의 구조 매크로 이름표 계수기 3 매크로 이름표 계수기 4 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  27. 이중 패스 매크로 프로세서 알고리즘 • 이중패스 매크로 프로세서 알고리즘 • 기본적인 매크로 프로세서 • 매크로 전향 참조 지원 • 매크로 인자 지원 • 확장형 매크로 프로세서 • 기본형 매크로 프로세서 • 매크로 내에서의 다른 매크로 호출 지원 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  28. 패스-1 알고리즘 (1) procedure pass1 { MDTC ← 1; MNTC ← 1; repeat 원시프로그램에서 다음 줄을 읽음; if (MACRO 지시어) { 매크로 이름과 MDTC의 값을 MNT의 MNTC번째 행에 기록; MNTC ← MNTC + 1; 형식인수표 작성 (형식인수에 색인번호를 붙임); 매크로 이름이 있는 줄을 MDT의 MDTC행에 기록; MDTC ← MDTC + 1; 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  29. 패스-1 알고리즘 (2) repeat 다음 줄을 읽는다; 문장 속의 형식인수를 색인번호로 치환; 이 줄을 MDT의 MDTC행에 기록; MDTC ← MDTC + 1; until(ENDM 지시어); ENDM을 MDT의 MDTC행에 기록; MDTC ← MDTC + 1; } else { 패스2를 위해 출력; if (END 지시어) then 패스1 끝; } forever } 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  30. 패스1의 흐름 패스1시작 MDTC ← 1, MNTC ← 1 입력된 원시프로그램의 다음 줄을 읽는다. 아니오 아니오 패스2를 위해 출력 MACRO 지시어? END 지시어? 예 예 매크로의 이름과 MDTC의 현재 값을 MNT의 MNTC행에 기록한다. 패스1끝 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  31. 다음 줄을 읽는다 MNTC ← MNTC+1 패스1의 형식인수표 작성 문장속의 인수를 색인기호로 치환 매크로 이름을 MDT의 MDTC행에 기록 이 줄을 MDT의 MDTC행에 기록 MDTC ← MDTC+1 MDTC ← MDTC+1 아니오 예 ENDM 지시어? ENDM을 MDT에 기록 MDTC ← MDTC+1 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  32. 패스2 알고리즘 (1) procedure pass2 { repeat 패스1의 출력에서 다음 명령어를 읽는다; 읽은 명령어를 MNT의 각 행과 비교; if (매크로 호출?) { MDTP ← MNT내의 MDT 색인값; 실인수표 작성(실인수에 색인번호 붙임); repeat MDTP ← MDTP + 1; MDT에서 MDTP행의 문장을 읽는다; 문장내의 인수 색인 번호를 실인수로 치환; 확장된 명령어를 출력; until (ENDM 지시어); } 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  33. 패스2 알고리즘 (2) else { 읽은 명령어 출력: if(END 지시어?) then 패스2 끝; } forever; } 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  34. 패스2의 흐름 패스2시작 패스1 출력의 다음 줄을 읽는다 명령어 검색 (MNT 이용) 아니오 END 지시어? 아니오 읽은 명령어 출력 매크로 이름 발견? 예 예 MDTP←MNT 안의 MDT 색인값 패스2끝 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  35. 실인수표 작성 MDTP ← MDTP+1 MDT로부터 MDTP 행을 읽어 온다 예 ENDM 지시어? 아니오 명령어 출력 실인수표를 참조하여 문장내의 인수번호를 실인수로 치환 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  36. 확장된 패스-2 알고리즘 (1) • 확장된 패스-2 알고리즘 • 매크로 내에서의 다른 매크로 호출에 대한 매크로 확장을 지원 • 매크로 확장 시에 새로운 매크로에 대한 호출을 만나면 새로운 매크로를 확장한 후에 이전 매크로 확장을 마무리한다 • Recursive macro expansion • 매크로 확장에 스택(stack)을 사용 • 내포된 매크로 호출(nested macro call)에 대해 확장하기 위해서는 현재 진행중인 매크로 확장의 상태 값을 저장 • 매크로 확장의 상태 값으로 이전의 스택포인터(SP), 확장중인 MDTP, 매크로의 실인자 등을 저장 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  37. 확장된 패스-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-번째 내용 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  38. 확장된 패스-2 알고리즘 (2) Procedure Extened_Pass2 { sp  1; 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; 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  39. 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); } } until (s(sp) != -1); // 매트로 내 매트로 호출 } Until (Not END 지시어); // 초기 매크로 호출 } 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  40. 확장된 패 스 2 알고리즘 의 흐 름 시 작 명령어 완성 S(sp+1)  S(sp+1) + 1 Sp  1 Yes ENDM ? Pass1의 출력에서 다음 명령어를 읽는다. No sp S(sp) 매크로 호출 ? 매크로호출 ? 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)에 대입 S(sp+1)S(sp+1)+1 S(sp+1)S(sp+1)+1 MDT에서 S(sp+1)행을 읽음 S(sp) = -1 ? No Yes S(sp+2), … S(sp+N+1) 를 이용하여 인수대치 Yes END지시어? 끝 No 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

  41. 요 약 • 매크로프로세서의 기능과 자료구조 이해 • 이중패스 알고리즘의 데이터베이스 이해 • 형식인수표와실인수표의형태를이해 • 매크로정의표와 매크로이름표의 형태를 이해 • 매크로프로세서의 패스1과 패스2의 흐름을 이해 신라대학교 컴퓨터공학과 컴퓨터 응용 및 실습 II

More Related