시스템 프로그래밍 - 과제1
시스템 프로그래밍 과제 #1
1. 과제내용
SIC standard machine의 two-pass assembler 를 설계 및 구현 한다.
(교재 2장 F igure 2.4의 알고리즘 참고)
2. 제출일
9월 26일 수요일
(제출일 이후 제출 시 1일마다 10% 감점이 되며, 10월 2 일 화요일 자정이 지나면 받지 않습니다 .)
3. Assembler의 세부 구현사항
①구 현 내용
- 입력으로 SIC assembly source 코드를 받는다.
- two-pass 알고리즘을 이용하되 심볼테이블(SYMTAB)을 작성하고 이와 Operation Code Table(OPTAB)을 이용하여 명령어와 어드레스 부분을 변환한다.
- 결과물로는 assembly listing file과 object program을 생성한다.
- 기본 알고리즘을 이용하되, 설계구성요소로 목표설정, 분석, 제작, 시험평가 과정을 거치도록 한다. (설계구성요소는 모두 보고서에 명시 하도록 한다)
②프 로그램 명령 행
- 다음과 같이 명령 행을 통해 input filename과 output filename을 받는다.
- >실행파일명 어셈블리 소스파일 명오브젝트파일 명ex) sic_assmbler source1.asm object1.obj
③ In put/Output 파일
Sou rce file
- assembler에게 입력되는 assembly source file
- source file의 format
* l abel, opcode, operand, comment는 탭 문자(\t) 또는 공백(space)을 사용하여 구분
* 줄 바꿈 문자는 \n 사용
* 라인의 1번째 byte에 마침표(.)가 위치할 경우 라인 전체를 comment로 간주
(교재 p.45 Figure 2.1 참 고)
Object file
- assembler에 의해 생성되는 object program file
- 교재의 object file format을 준수해야 함 (교재 p.49 Figure 2.3 참 고)
Assembly listing file
- 입력되는 source file의 처리 정보가 기록되어야 함 ( 교재 p.47 Figure 2.2 참고 )
- source file의 각 라인에 대한 Loc, object code, source code, 발생한 error는 반드시 기록해야 함
Intermediate file
- pass1에서 pass2로 전달되는 내부 data file
- intermediate file은 assembler의 pass 1 부분과 pass 2 부분간의 data 전달에 사용되므로 형식과 내용은 자유롭게 정할 수 있음. ( 채점 시포함되지 않음)
④ 구현 참고 사항
- assembler는 기본적으로 SIC machine의 모든 instruction과 directive (START, END, BYTE, WORD, RESB, RESW) statement를 처리 하여야 한다
- SIC assembler의 경우 교재와 아래의 Instruction 세부사항을 참고로 하여 작성한다.
OPERAND | Operand는 label 필드에 위치하는 symbol이 위치하며 operand뒤에 `,X`가 위치할 경우 indexed addressing임을 가리킨다. |
START STATEMENT | 소스 프로그램의 처음 statement는 START이여야 한다(comment statement 제외). START statement의 operand 필드에는 16진수로 표현된 프로그램의 시작 주소가 위치한다. |
END STATEMENT | 소스 프로그램의 마지막에는 END statement가 위치한다. END statement의 operand 필드에는 symbol이 위치한다. |
BYTE STATEMENT | operand 필드에는 C`ccc`, X`hhh`가 위치한다(c= character , h=Hex digit). |
WORD STATEMENT | operand 필드에 symbol이나 최대 4자리의 decimal integer가 위치하며 `-`가 앞에 붙으면 음수임을 나타낸다. |
RESB AND RESW STATEMENTS | operand 필드에는 최대 4자리의 decimal integer non-negative decimal integer가 위치한다. |
ADDRESS LIMITATION | maximum address는 FFFF이다. |
⑤ 테스트
단위테스트
각 모듈의 입출력 명세에 따라 다양한 입력데이터를 작성하여 모듈을 테스트한다.
사용한 단위테스트 방법 혹은 사용한 단위테스트 툴을 보고서에 명시한다.
과제 제출 시 test code도 source code와 함께 제출한다.
종합테스트
다양한 경우의 수를 고려하여 테스트 데이터를 작성하고 프로그램을 테스트한다.
테스트한 경우들을 보고서에 명시하고 그 중 한 테스트의 테스트한 assembly source file, 생성된 object file 과 assembly listing file의 내용을 보고서에 포함한다.
⑥ 에러처리
교재 p.53-54 F igure 2.4의 알고리즘에 명시된 3가지 에러는 반드시 처리할 수 있어야 한다. duplicate symbol, invalid operation code, undefined symbol
⑦사용언어 및 환경
사용언어 는 C, C++, Java 중에서, 실행환경 Windows, Linux 중에서 자유롭게 선택하되 그 내용을 보고서에 명시해야 하며 컴파일 및 실행방법을 보고서에 기술한다.
4. 설계 구성요소
아래 설계구성요소들을 참고하여 어셈블러를 설계 및 구현하며 아래 내용들은 모두 보고서에 포함하도록 한다.
① 목표설정
어셈블러의 기능적, 성능적 요구 조건을 수집하여 설계의 명확한 목표를 설정한다.
이러한 활동은 문서화를 통하여 형식화한다.
② 분석
목표설정에서 명시한 사양을 충족하기 위하여, 이에 관계된 요구조건을 분석하고 문제의 기본적인 해결전략을 수립한다 .
문제에 나타나는 요구사항과 설계요소와의 상관관계를 분석하여 문제의 기본 해결방안을 찾는다 .
의사결정 요인이 있는 경우, 경제성, 신뢰성 분석 등을 수립한다.
③제작
분석결과를 바탕으로 데이터구조를 작성한다.
프로그램의 구조를 분석하여 모듈라구조를 만든다.
각 모듈의 입출력 명세서를 작성한다.
분석된 데이터의 상관관계를 바탕으로 알고리즘을 작성한다.
각 데이터구조 및 모듈을 구현한다.
④시험평가
단위테스트
각 모듈의 입출력 명세에 따라 다양한 입력데이터를 작성하여 모듈을 테스트한다.
종합테스트
다양한 경우의 수를 고려하여 테스트 데이터를 작성하고 프로그램을 테스트한다.
5. 현실제약요소
아래의 현실제약요소들을 참고하여 어셈블러를 설계 및 구현한다.
① 경제성
프로그램의 효과적인 작성 및 수정을 위하여 구현 이전에 반드시 경제적인 설계를 유도한다.
경제성의 요인: 프로그램 크기(원천코드, 실행코드), 메모리 사용량, CPU 시간, 기타 시스템 자원 사용량
② 신뢰성
프로그램 자체의 오류가 없도록 다양한 입력과 동작 경우를 실험한다.
오류 데이터가 입력될 경우에도 프로그램 이오 동작 하지 않도록 작성한다.
6. 제출물
①소스파일
어셈블러 소스파일
단위테스트 및 종합테스트 소스파일
②실행파일
어셈블러 소스파일을 컴파일 한 실행파일
③ 문서
컴파일 및 실행 방법, 환경에 대한 설명을 기술한다.
구현한 assembler의 설계구성요소 및 테스트 결과에 대한 설명, bug 및 개선할 사항 등 을 기술 한다.
반드시 assembler source code, 테스트한 assembly source file, 생성된 object file 과 assembly listing file의 내용이 포함 되어야 한다.
7. 제출방법
• 제출일(9월 26 일)까지 6의 제출물을 하나의 압 축파일로 만들어 아래 E-mail로 제출
myya15 @ajou.ac.kr
• 메일 제목과 첨부 파일 제목은 ‘시스템프로그램- 교시 -학번-이름’의 형식으로 한다.
(예: 시스템프로그래밍- B교시 -200612345-홍길동)
8. 평가기준
미 제출 | 0% |
assembler 코드와 문서 제출 (미완성된 경우) | 40% |
SIC용 assembler 구현 (교재 2.1절까지의 구현) | 100% |
SIC/XE, Control Section 등을 구현 | 100% + 추가 기능당 10% 씩 최대 20% 의 추가점수 부여 |
보고서와 결과물의 동작으로 평가한다.
- 기본동작 설계 및 동작 여부 와 추가 기능 설계 및 동작 여부
- 설계 구성요소와 현실제약요소의 만족성
- 설계의 창의성
- 결과물의 전체적인 동작 여부 및 성능, 안정성, 경제성
- 보고서 평가
9. 기타
• 과제의 구현에 대한 질문 사항은 e-class 수업 게시판을 이용한다.
• Assembler 이론이나 일반적 프로그래밍 기법에 대한 학생들의 토론은 장려하지만, 다른 학생의 문서나 프로그램을 복제하여 제출할 경우 제출자와 제공자 모두 0점 처리된다.
• 담당 조교 연락처: 분산 이동 컴퓨팅 연구실 031-219-2443 (내선 2443)
이은미 myya15 @ajou.ac.kr, 이정아 lja0519 @ajou.ac.kr
이 글은 스프링노트에서 작성되었습니다.
'Computer > Computer Eng.' 카테고리의 다른 글
구글에서 드리는 송년 메세지 (0) | 2009.12.21 |
---|---|
링커와 로더 (0) | 2007.10.10 |
The Simplified Instructional Compiler(SIC) 요약(2) (0) | 2007.10.07 |
The Simplified Instructional Compiler(SIC) 요약(1) (0) | 2007.10.07 |
시스템 프로그래밍 - 과제1 (0) | 2007.09.13 |
ACM ICPC (0) | 2007.09.09 |