시스템 프로그래밍 - 과제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
댓글 남기기
◀ PREV 123456 NEXT ▶