TVM ver. Beta 설계 제안서
description
Transcript of TVM ver. Beta 설계 제안서
L o g o
TVM ver. Beta 설계 제안서
www.deu.ac.kr
L o g o
www.deu.ac.krwww.deu.ac.kr
Contents
프로젝트 개요1
프로젝트 진행일정2
프로젝트 목표3
프로젝트 구성4
L o g o
www.deu.ac.krwww.deu.ac.kr
Hot Tip
What is TVM?
TVM 이란 하드웨어를 구성하는
레지스터 , 데이터메모리 , 코드메모리를
기반으로 가상컴퓨터 (Vitual Machine) 의
기계어 (Machine Language)
인터프리터 (Interpreter) 를 말한다 .
L o g o
www.deu.ac.krwww.deu.ac.kr
프로젝트 개요
레지스터
레지스터는
데이터메모리에 있는
자료들을 입출력하고
연산하는 기능을 함 .
Hardware하드웨어
코드메모리코드메모리는 사용자가
정한 명령들이
집합되어있는 장소로
순차적으로 실행되면서
프로그램을 작동시킨
다 .
데이터메모리
데이터메모리는
데이터가 저장되는
장소로 레지스터와
상호교환 한다 .
L o g o
www.deu.ac.krwww.deu.ac.kr
프로젝트 진행일정
프로젝트 완료프로젝트 완료
최종점검코드작성
토의
초안
L o g o
www.deu.ac.krwww.deu.ac.kr
프로젝트 진행일정
88 주주88 주주 기본코드를 분석하여 추가할 수 있는 기능 가능성 토의
99 주주99 주주8 주 토의내용 바탕으로구현 가능한 기능과 불가능한 기능 분류더 추가할 내용 토의
1010 주주1010 주주프로그램코드 작성하여초안 코드에 대한 오류 및 문법 점검오류와 추가 가능한 기능 토의
L o g o
www.deu.ac.krwww.deu.ac.kr
프로젝트 진행일정
1111 주주1111 주주 프로젝트 초안 확인 및 프로그램 업그레이드 가능성 판별
1212 주주1212 주주작성된 코드의 효율성을 판별하고프로그램 코드 추가 간에 생긴오류와 문법적 오류에 대한 토의
1313 주주1313 주주 최종보고 준비 및 결과물 최종 점검프로젝트 작품에 대한 소감 및 의견 수렴
L o g o
www.deu.ac.krwww.deu.ac.kr
프로젝트 진행목표
Purpose
긴 문자열을 처리하는 TVM 의 구현
ADD
SUB
MUL
DIV
STACK
STRING
L o g o
www.deu.ac.krwww.deu.ac.kr
프로젝트 진행목표
오류
없이
구현
TVM
기본
순서
뒤집
기문
자열
순서
변환
문자
열변
환대
소문
자변
환
100개
의문
자열
무한
대문
자열
1 단계 2 단계 3 단계 4 단계
L o g o
www.deu.ac.krwww.deu.ac.kr
프로젝트 진행목표
연산연산기본 레지스터연산
연산 후 스택에 저장
값을 Reverse 후 저장
L o g o
www.deu.ac.krwww.deu.ac.kr
ADD(stack)
reg[D] += reg[S];
위의 연산 값을
Stack 에 저장한다 .
3RM - ADDR 의 값이 0~3 일 경우reg[R] += data[M];
3RN - ADDR 의 값이 4~7 일 경우reg[R] += N;
ADD(reverse)
reg[D]+=reg[S];
연산 결과가
‘123’ 이 나오면
‘321’ 로 저장시킨
다 .
프로젝트 진행목표
3RM3RN
32DS 39DS
L o g o
www.deu.ac.krwww.deu.ac.kr
프로젝트 진행목표
100100 자리까지 구현 가능한 자리까지 구현 가능한 TVMTVM100100 자리까지 구현 가능한 자리까지 구현 가능한 TVMTVM
Add Your Text
CharChar 배열배열 자리올림자리올림 33 의의 10001000 승승
L o g o
www.deu.ac.krwww.deu.ac.kr
프로젝트 구성요소
PC 의 정확한 타겟팅 배열의 정확한 연산
올바른 입출력 / 연산
L o g o
www.deu.ac.krwww.deu.ac.kr
프로젝트 구성요소
명령어 Mnemonic 의미
1RM Load 단 , R=0,1,2,3 reg[R] = data[M];
1RN Load 단 , R=4,5,6,7 reg[R-4] = N;
2RM Store data[m] = reg[R];
3RM ADD 단 , R=0,1,2,3 reg[R] += data[M];
3RN ADD 단 , R=4,5,6,7 reg[R] += N;
32DS ADD(stack) reg[D] += reg[S]; 의 값을 stack 에 저장
38DS ADD reg[D] += reg[S];
39DS ADD(reverse) reg[D] += reg[S]; 를 하여 123 이 나오면 321 로 저장한다 .
4RM SUB 단 , R=0,1,2,3 reg[R] -= data[M];
4RN SUB 단 , R=4,5,6,7 reg[R] -= N;
42DS SUB(stack) reg[D] -= reg[S]; 의 값을 stack 에 저장
48DS SUB reg[D] -= reg[S];
49DS SUB(reverse) reg[D] -= reg[S]; 를 하여 123 이 나오면 321 로 저장한다 .
L o g o
www.deu.ac.krwww.deu.ac.kr
프로젝트 구성요소
명령어 Mnemonic 의미
60DS DIV reg[D] /= reg[S];
61DS MOD reg[D] %= reg[S];
62DS DIV(stack) reg[D] /= reg[S]; 의 값을 stack 에 저장
69DS DIV(reverse) reg[D] /= reg[S]; 의 값이 123 이 나오면 321 을 저장한다 .
7RM JNZ reg[R] 의 값이 0 이 아니면 , 명령어의 실행을 code[M] 으로 이동 ;
80M JUMP 명령어의 실행을 code[M] 으로 이동 ;
910R IN 표준입력으로부터 하나의 정수 n 을 읽어서 reg[R] 에 저장 ; reg[R] = n;
920R OUT reg[R] 의 값을 출력하기
930R PUSH reg[R] 의 값을 STACK 에 PUSH( 저장하기 )
940R POP STACK 으로부터 POP( 읽기 ) 하여 reg[R] 에 저장한다 .
95N PUSH_PC PC+N 값을 STACK 에 PUSH( 저장하기 )
96N PJ_PC PC 값을 STACK 에 PUSH( 저장하기 ) 하고 code(N) 으로 점프
970R PJR_PC PC+N 값을 STACK 에 PUSH( 저장하기 ) 하고 code(reg[r]) 로 점프
9800 POP_PC PC 값을 STACK 으로부터 POP( 읽기 )
L o g o
Click to edit company slogan .
www.deu.ac.kr