Download - TVM ver. 2.03 최종보고서

Transcript
Page 1: TVM ver. 2.03  최종보고서

L o g o

TVM ver. 2.03 최종보고서

www.deu.ac.kr

Page 2: TVM ver. 2.03  최종보고서

L o g o

www.deu.ac.krwww.deu.ac.kr

Contents

프로그램 개요1

프로그램 사양2

프로그램 구성요소3

프로젝트 구동4

Page 3: TVM ver. 2.03  최종보고서

L o g o

www.deu.ac.krwww.deu.ac.kr

Hot Tip

What is TVM?

TVM 이란 하드웨어를 구성하는

레지스터 , 데이터메모리 , 코드메모리를

기반으로 가상컴퓨터 (Vitual Machine) 의

기계어 (Machine Language)

인터프리터 (Interpreter) 를 말한다 .

Page 4: TVM ver. 2.03  최종보고서

L o g o

www.deu.ac.krwww.deu.ac.kr

프로젝트 개요

레지스터

레지스터는

데이터메모리에 있는

자료들을 입출력하고

연산하는 기능을 함 .

Hardware하드웨어

코드메모리코드메모리는 사용자가

정한 명령들이

집합되어있는 장소로

순차적으로 실행되면서

프로그램을 작동시킨

다 .

데이터메모리

데이터메모리는

데이터가 저장되는

장소로 레지스터와

상호교환 한다 .

Page 5: TVM ver. 2.03  최종보고서

L o g o

www.deu.ac.krwww.deu.ac.kr

프로그램 사양

메모리메모리메모리메모리코드메모리 100 개까지 사용 가능 함확장하지 않은 이유는 100 개 이상 사용할 일이 없다고 판단되었기 때문

정수정수정수정수 정수의 출력범위를 -32768 부터 +32768 까지사용 가능하게 코딩 했음 .

문자문자문자문자 Getchar() 를 이용하여 문자를 입력받는데 ,대소문자 변형 기능을 내장하고 있음 .

Page 6: TVM ver. 2.03  최종보고서

L o g o

www.deu.ac.krwww.deu.ac.kr

프로젝트 구성요소

명령어 Mnemonic 의미

0000 End 프로그램 종료

01DS Load reg[D] = reg[S]

명령어 Mnemonic 의미

1DM Load 단 , R=0,1,2,3 reg[R] = data[M];

1DN Load 단 , R=4,5,6,7 reg[R-4] = N + 32768

명령어 Mnemonic 의미

2SM Store data[M] = reg[S];

2SN Store reg[S-4] = M;

Page 7: TVM ver. 2.03  최종보고서

L o g o

www.deu.ac.krwww.deu.ac.kr

프로젝트 구성요소

명령어 Mnemonic 의미

3R0S ADD reg[D] += reg[S];

3RN ADD 단 , R=4,5,6,7 reg[R-4] += N;

38DS ADD reg[D] += reg[S] (32768을 더하지않음 )

명령어 Mnemonic 의미

4R0S SUB reg[R] -= reg[S];

4RN SUB 단 , R=4,5,6,7 reg[R-4] -= N;

명령어 Mnemonic 의미

5R0S MUL reg[R] *= reg[S];

5RN MUL 단 , R=4,5,6,7 reg[R-4] *= N;

Page 8: TVM ver. 2.03  최종보고서

L o g o

www.deu.ac.krwww.deu.ac.kr

프로젝트 구성요소

명령어 Mnemonic 의미

6R0S DIV reg[R] /= reg[S];

61RS DIV 단 , R=4,5,6,7 reg[R-4] /= N;

68XX MOD reg[0] = reg[2] % reg[1];

명령어 Mnemonic 의미

7RM JUMPreg[R] 의 값이 0 이면 , 명령어의 실행을 code[M] 으로 이동 ;

7RN JUMP단 , R=4,5,6,7 reg[R-4] == 32768 이면 code[M] 으로 이동 ;

78N JUMP if reg[0] != 32768 -> pc = code[pc];

79N JUMP if reg[0] != 0 -> pc = code[pc];

Page 9: TVM ver. 2.03  최종보고서

L o g o

www.deu.ac.krwww.deu.ac.kr

프로젝트 구성요소

명령어 Mnemonic 의미

80M JUMP 명령어의 실행을 code[M]으로 이동 ;

81N JUMP PC = N if (reg[0]==reg[1]);

82N JUMP PC = N if (reg[0]!=reg[1]);

83N JUMP PC = N if (reg[0]<reg[1]);

84N JUMP PC = N if (reg[0]<=reg[1]);

85N JUMP PC = N if (reg[0]>reg[1]);

86N JUMP PC = N if (reg[0]>=reg[1]);

Page 10: TVM ver. 2.03  최종보고서

L o g o

www.deu.ac.krwww.deu.ac.kr

프로젝트 구성요소

명령어 Mnemonic

의미

910R IN표준입력으로부터 하나의 정수 n 을 읽어서 reg[R]에 저장 ;reg[R] = n;

911R IN 표준입력으로부터 하나의 정수를 받음 (32768 더하지않음 )

920R OUT reg[R]의 값을 출력하기

921R OUT reg[R]의 값 출력하기 (32768 빼지 않음 )

930R char IN 문자 하나를 reg[R]에 저장 ; reg[R] = getchar();

940Rchar OUT

reg[R]에 있는 문자를 출력 ; cout << reg[R];

950R PUSH reg[R]의 값을 STACK에 PUSH(저장하기 )

970Rchange IN

문자하나를 대소문자 바꾸어 reg[R] 에 저장 ; reg[R] = getchar();

980Rchange OUT

reg[R] 에 있는 문자를 대소문자 바꾸어 출력 ; cout << reg[R];

Page 11: TVM ver. 2.03  최종보고서

L o g o

www.deu.ac.krwww.deu.ac.kr

프로그램 구동

N의

약수

를 출

력약

수 출

순서

뒤집

기문

자열

순서

변환

숫자

들의

최대

값최

대값

출력

N + …

+ M 합

N부

터 M

까지

1 2 3 4

Page 12: TVM ver. 2.03  최종보고서

L o g o

www.deu.ac.krwww.deu.ac.kr

프로그램 구동문자열

거꾸로출력

00020406081012141618202224

0132510930093008114360195008004722496009400460180140000

입력입력입력입력 A B C D E F G

출력출력출력출력 G F E D C B A

Page 13: TVM ver. 2.03  최종보고서

L o g o

www.deu.ac.krwww.deu.ac.kr

프로그램 구동

입력입력입력입력 A B C D E F G

출력출력출력출력 g f e d c b a

문자열 거꾸로대소 변환출력

00020406081012141618202224

0132510930093008114360195008004722496009800460180140000

Page 14: TVM ver. 2.03  최종보고서

L o g o

www.deu.ac.krwww.deu.ac.kr

프로그램 구동

입력입력입력입력 5( 갯수 ) 20 40 1000 5 98

출력출력출력출력 1000

최대값 출력

00020406081012141618

0102400910276164601910186040101800492000000

Page 15: TVM ver. 2.03  최종보고서

L o g o

www.deu.ac.krwww.deu.ac.kr

프로그램 구동

입력입력입력입력 12

출력출력출력출력 12 6 4 3 2 1

정수를 입력받아정수의 약수 출력

000204060810121416

09

911201126800791092114501711680040000

Page 16: TVM ver. 2.03  최종보고서

L o g o

www.deu.ac.krwww.deu.ac.kr

프로그램 구동

입력입력입력입력 10 1

출력출력출력출력 10 9 8 7 6 5 4 3 2 1

처음 입력 값부터마지막 값까지

출력 ( 내림차순 )

000204060810

21016

100011019200440178040000

Page 17: TVM ver. 2.03  최종보고서

L o g o

www.deu.ac.krwww.deu.ac.kr

프로그램 구동

입력입력입력입력 1 10

출력출력출력출력 55

N 부터 M 까지의 정수의 합

000204060810121416

09

911291100112811435013821800692120000

Page 18: TVM ver. 2.03  최종보고서

L o g o

www.deu.ac.krwww.deu.ac.kr

프로그램 구동

입력입력입력입력 i am a boy, I am A boy

출력출력출력출력 I AM A BOY, i AM a BOY

문자대 / 소문자로

바꾸기

00020406081012

07

2510930093008112980080040000

Page 19: TVM ver. 2.03  최종보고서

L o g o

Click to edit company slogan .

www.deu.ac.kr