2. Prerequisite
● C 언어에 대한 깊은 이해
● 컴퓨터 시스템에 대한 기본적인 이해
● 어셈블리 언어 경험
● 정의롭고 아름다운 마음 (?)
3. Syllabus
1. 가상 머신 설계 및 구현
a. 이론 습득 및 예제 분석
i. 튜링 기계 및 튜링 완전
ii. 명령어 셋의 다양한 종류
iii. 주소 지정 방식 및 MMU
iv. I/O와 인터럽트
b. 설계 및 구현
2. 만든 가상 머신을 위한 프로그래밍 언어 설계
및 구현
3. 만든 프로그래밍 언어로 운영체제 설계 및 구
현
4. Turing completeness?
● 수학적 문제를 기계적으로 해결할 수 있다는
계산 모델 = 튜링 기계
● 어떤 다른 계산 모델이 튜링 기계로 나타낼 수
있는 프로그램을 모두 나타낼 수 있고, 그 역
도 성립함 = 튜링 완전
● 예: Brainfuck
5. Instruction set
● RISC vs. CISC
○ RISC(Reduced Instruction Set Computer)
○ CISC(Complex Instruction Set Computer)
● Opcode & Operand
● SISD, SIMD, MIMD, MISD
● 1 Address Code, 2 Address Code, 3
Address Code
9. 예제 분석 (1)
명령어, 총 17개
[opcode 1바이트]
[operand 당 2바이트]
16비트 컴퓨터
? 분기문. 두개가 같으면
= 메모리에 즉치
l 메모리 복사
+ 더하기
- 빼기
* 곱하기
/ 나누기
m 나머지 연산
o OR
a AND
x XOR
n NOT
i 인터럽트 호출
p 푸시
P 팝
h 한 클럭 쉬기
H 컴퓨터 종료
11. 예제 분석 (3)
● 메모리 맵
00x0000~0x000F: 레지스터 (범용 레지스터 4개 (R0-R3), 차례대로 SP, SB, FL, IP)
0xFFFF 00x0010~0x0017: 인터럽트 벡터 테이블 (0-3)
0x0018: 키보드 스캔 코드 레지스터
00x0820~0x0FFF: 비디오 콘솔 메모리
12. 예제 분석 (4)
● 인터럽트 구현
● 인터럽트 0번 발생
● Interrupt Vector Table에서 Handler의 주소를 찾음 ( 0x0010 )
● 스택에 현재 IP를 저장하고, 핸들러로 점프함
● 처리 후 핸들러에서 IP를 복구 시켜줌