TVM ver. 2.03 최종보고서 www.deu.ac.kr
Contents 프로그램 개요 1 프로그램 사양 2 프로그램 구성요소 3 프로젝트 구동 4 www.deu.ac.kr
What is TVM? Hot Tip TVM이란 하드웨어를 구성하는 레지스터, 데이터메모리, 코드메모리를 기반으로 가상컴퓨터(Vitual Machine)의 기계어(Machine Language) 인터프리터(Interpreter)를 말한다. www.deu.ac.kr
프로젝트 개요 Hardware 레지스터 코드메모리 하드웨어 레지스터 레지스터는 데이터메모리에 있는 자료들을 입출력하고 연산하는 기능을 함. 코드메모리 코드메모리는 사용자가 정한 명령들이 집합되어있는 장소로 순차적으로 실행되면서 프로그램을 작동시킨다. 데이터메모리 데이터메모리는 데이터가 저장되는 장소로 레지스터와 상호교환 한다. www.deu.ac.kr
프로그램 사양 메모리 정수 문자 코드메모리 100개까지 사용 가능 함 확장하지 않은 이유는 100개 이상 사용할 일이 없다고 판단되었기 때문 정수 정수의 출력범위를 -32768 부터 +32768까지 사용 가능하게 코딩 했음. 문자 Getchar()를 이용하여 문자를 입력받는데, 대소문자 변형 기능을 내장하고 있음. www.deu.ac.kr
프로젝트 구성요소 명령어 Mnemonic 의미 0000 End 프로그램 종료 01DS Load reg[D] = reg[S] 1DM 단, R=0,1,2,3 reg[R] = data[M]; 1DN 단, R=4,5,6,7 reg[R-4] = N + 32768 2SM Store data[M] = reg[S]; 2SN reg[S-4] = M; www.deu.ac.kr
프로젝트 구성요소 명령어 Mnemonic 의미 3R0S ADD reg[D] += reg[S]; 3RN 단, R=4,5,6,7 reg[R-4] += N; 38DS reg[D] += reg[S] (32768을 더하지않음) 4R0S SUB reg[R] -= reg[S]; 4RN 단, R=4,5,6,7 reg[R-4] -= N; 5R0S MUL reg[R] *= reg[S]; 5RN 단, R=4,5,6,7 reg[R-4] *= N; www.deu.ac.kr
프로젝트 구성요소 명령어 Mnemonic 의미 6R0S DIV reg[R] /= reg[S]; 61RS 단, R=4,5,6,7 reg[R-4] /= N; 68XX MOD reg[0] = reg[2] % reg[1]; 7RM JUMP reg[R]의 값이 0이면, 명령어의 실행을 code[M]으로 이동; 7RN 단, R=4,5,6,7 reg[R-4] == 32768이면 code[M]으로 이동; 78N if reg[0] != 32768 -> pc = code[pc]; 79N if reg[0] != 0 -> pc = code[pc]; www.deu.ac.kr
프로젝트 구성요소 명령어 Mnemonic 의미 80M JUMP 명령어의 실행을 code[M]으로 이동; 81N PC = N if (reg[0]==reg[1]); 82N PC = N if (reg[0]!=reg[1]); 83N PC = N if (reg[0]<reg[1]); 84N PC = N if (reg[0]<=reg[1]); 85N PC = N if (reg[0]>reg[1]); 86N PC = N if (reg[0]>=reg[1]); www.deu.ac.kr
프로젝트 구성요소 명령어 Mnemonic 의미 910R IN 표준입력으로부터 하나의 정수 n을 읽어서 reg[R]에 저장; reg[R] = n; 911R 표준입력으로부터 하나의 정수를 받음(32768 더하지않음) 920R OUT reg[R]의 값을 출력하기 921R reg[R]의 값 출력하기(32768 빼지 않음) 930R char IN 문자 하나를 reg[R]에 저장; reg[R] = getchar(); 940R char OUT reg[R]에 있는 문자를 출력; cout << reg[R]; 950R PUSH reg[R]의 값을 STACK에 PUSH(저장하기) 970R change IN 문자하나를 대소문자 바꾸어 reg[R]에 저장; reg[R] = getchar(); 980R change OUT reg[R]에 있는 문자를 대소문자 바꾸어 출력; cout << reg[R]; www.deu.ac.kr
프로그램 구동 1 2 3 4 순서뒤집기 N + … + M 합 N의 약수를 출력 숫자들의 최대값 최대값 출력 문자열순서변환 약수 출력 최대값 출력 문자열순서변환 N부터 M까지 합 순서뒤집기 N의 약수를 출력 N + … + M 합 숫자들의 최대값 www.deu.ac.kr
프로그램 구동 문자열 거꾸로출력 00 02 04 06 08 10 12 14 16 18 20 22 24 13 2510 9300 8114 3601 9500 8004 7224 9600 9400 4601 8014 0000 입력 A B C D E F G 출력 G F E D C B A www.deu.ac.kr
프로그램 구동 입력 출력 문자열 거꾸로 대소 변환출력 00 02 04 06 08 10 12 14 16 18 20 22 24 00 02 04 06 08 10 12 14 16 18 20 22 24 13 2510 9300 8114 3601 9500 8004 7224 9600 9800 4601 8014 0000 입력 A B C D E F G 출력 g f e d c b a www.deu.ac.kr
프로그램 구동 최대값 출력 00 02 04 06 08 10 12 14 16 18 2400 9102 7616 4601 9101 8604 0101 8004 9200 0000 입력 5(갯수) 20 40 1000 5 98 출력 1000 www.deu.ac.kr
프로그램 구동 입력 출력 정수를 입력받아 정수의 약수 출력 00 02 04 06 08 10 12 14 16 9 9112 00 02 04 06 08 10 12 14 16 9 9112 0112 6800 7910 9211 4501 7116 8004 0000 입력 12 출력 12 6 4 3 2 1 www.deu.ac.kr
프로그램 구동 입력 출력 처음 입력 값부터 마지막 값까지 출력(내림차순) 00 02 04 06 08 10 2 1 6 1000 00 02 04 06 08 10 2 1 6 1000 1101 9200 4401 7804 0000 입력 10 1 출력 10 9 8 7 6 5 4 3 2 1 www.deu.ac.kr
프로그램 구동 입력 출력 N부터 M까지의 정수의 합 00 02 04 06 08 10 12 14 16 9 9112 9110 00 02 04 06 08 10 12 14 16 9 9112 9110 0112 8114 3501 3821 8006 9212 0000 입력 1 10 출력 55 www.deu.ac.kr
프로그램 구동 입력 출력 문자 대/소문자로 바꾸기 00 02 04 06 08 10 12 7 2510 9300 8112 9800 00 02 04 06 08 10 12 7 2510 9300 8112 9800 8004 0000 입력 i am a boy, I am A boy 출력 I AM A BOY, i AM a BOY www.deu.ac.kr
Click to edit company slogan . www.deu.ac.kr Thank You ! Click to edit company slogan .