[컴퓨터구조] C++ 16bit 어셈블러 제작 (LEXER 포함)

등록일 2003.05.20 압축파일 (zip) | 1페이지 | 가격 1,000원

소개글

컴퓨터 구조 과제물입니다.
간단한 형태의 어셈블러를 제작합니다.
컴파일러 과제물로도 출제 가능한 형태입니다.

목차

52,224 Assembler#0.doc
50,688 Assembler0.opt
545 Assembler0.dsw
148,480 Assembler0.ncb
1,612 Assembler0.plg
222 input.txt
6,060 main.cpp
1,437 inst_type.cpp
3,040 lexer.cpp
1,457 lexer.h
616 table_type.cpp
1,329 table_type.h
3,469 inst_type.h
4,776 Assembler0.dsp
83 fileformat.h
2,178 out.objt
1,254,400 Report.hwp - 제출용 문서
1,132 token_type.h
457 lineinfo.h
<DIR> Debug - 빌드된 폴더

1. 문제정의
2. 알고리즘
3. 결과
4. 결론

본문내용

[문제정의]

수업시간에 배운 16비트 CPU를 위한 어셈블러를 구현하라.

l 본 파일과 동일 폴더에 들어 있는 "어셈블리 정리.doc"에서 설명하고 있는 어셈블러를 제작하시오.
l 이전 수업 시간에 만들었던 어휘분석기인 lexer는 본 어셈블러에 맞추어 제작된 것이다. 따라서 그대로 사용해도 된다.
l 본 어셈블러와 수업 교재 6장에서 설명하고 있는 어셈블러 사이의 차이는 단지, HEX와 DEC의사 명령이 없어 숫자 데이터는 무조건 10진수로 취급한다는 것, 그리고 각 pass에서의 알고리즘이 다소 차이가 난다는 것 뿐이다. 따라서 교재의 설명을 참고 하여도 좋다.

[알고리즘]

① LC = 0
② "END"라인이 나올 때까지 구문분석을 하면서 다음을 반복
- 문장 처음에 <ID>, 가 나오면 (<ID>,LC값) 쌍을 심볼 테이블에 저장.
- 분석한 라인이 ORG 수도 명령 문장인 경우: LC를 ORG 다음에 나오는 숫자로 set
- 분석한 라인이 메모리 참조 명령(MRI)인 경우:
* 라인 인포(LineInfo)를 다음과 같이 구성한 다음 이를 리스트에 저장.
LineInfo.lineNo = 현재 라인 수
LineInfo.type = 1
LineInfo.op_code = 해당 명령의 op-code값
...
      최근 구매한 회원 학교정보 보기
      1. 최근 2주간 다운받은 회원수와 학교정보이며
         구매한 본인의 구매정보도 함께 표시됩니다.
      2. 매시 정각마다 업데이트 됩니다. (02:00 ~ 21:00)
      3. 구매자의 학교정보가 없는 경우 기타로 표시됩니다.
      최근 본 자료더보기
      추천도서