Click here to load reader
Upload
wakeup01
View
776
Download
8
Embed Size (px)
DESCRIPTION
taocp 1.4.3
Citation preview
해석 루틴
해석 루틴(=해석기) :
- 다른 프로그램의 명령들을 수행하는 컴퓨터 프
로그램
- 다른 프로그램은 유사 기계어로 작성
유사기계어 :
- 어떠한 명령을 표현하는 한 가지 방식
- 보통 연산 코드, 주소 등으로 구성
해석 루틴
ex) .NET framework, Java Virtual
Machine도 일종의 해석기
Wikipedia. http://en.wikipedia.org/wiki/File:CLR_diag.svg
해석 루틴
해석기가 응용되는 까닭
간결하고 효율적인 방식으로 표현 : - 유사 기계어는 복잡한 의사 결정 및 행동 절차
를 간결하고 효율적인 방식으로 표현
훌륭한 의사 소통 수단 : - 다중 패스 공정에서 패스들 사이의 훌륭한 의
사 소통 수단
기계에 독립적 : - 컴퓨터가 바뀐다고 해도 해석기만 다시 작성하
면 됨
MIX 시뮬레이터
시뮬레이터(=에뮬레이터) :
- 해석 루틴에 제공된 언어가 다른 컴퓨터의 기
계어인 경우일 때의 해석기
MIX로 작성된 MIX 시뮬레이터
프로세서 명령어 특성
ALU 연산 : - 사칙 연산, 비트 논리 연산
메모리 로드(load) : - 피연산자에 기록된 메모리 주소를 구해
- 그 내용을 읽어 지정된 레지스터 값에 읽음
메모리 스토어(store) : - 메모리 로드와 반대로 주어진 레지스터의 내용을
- 지정된 메모리 주소에 씀
분기문 : - 주어진 조건을 계산해(조건 분기일 때)
- 다음에 수행될 PC를 얻음
김민장. 프로그래머가 몰랐던 멀티코어 CPU 이야기. 서울: 한빛 미디어, 2010.
프로세서 명령어 처리 단계
1. 명령어 인출(Instruction Fetch, IF)
2. 명령어 해독(Instruction Decoding, ID)
3. 피연산자 인출(Operands Fetch, OF)
4. 명령어 실행(Instruction Execuction, EX)
5. 결과 저장(Operand Store, OS)
김민장. 프로그래머가 몰랐던 멀티코어 CPU 이야기. 서울: 한빛 미디어, 2010.
프로세서 명령어 처리 단계
while (has_instruction())
{
fetch();
decode();
operands_fetch();
execution();
operand_store();
}
김민장. 프로그래머가 몰랐던 멀티코어 CPU 이야기. 서울: 한빛 미디어, 2010.
MIX 시뮬레이터
* MIX SIMULATOR
ORIG 3500
BEGIN STZ TIME(0:2)
STZ OVTOG
STZ COMPI
ENT6 0 장소 0에서 첫 번째 명령을 가져온다.
CYCLE LDA CLOCK : 제어 루틴의 시작
TIME INCA 0
STA CLOCK
LDA 0,6 : 명령어 인출(Instruction Fetch, IF)
STA INST : 명령어 해독(Instruction Decoding, ID)
INC6 1
LDX INST(1:2) 주소의 절대값을 얻는다.
SLAX 5
STA M
LD2 INST(3:3) 색인 필드를 조사한다.
J2Z 1F
DEC2 6
J2P INDEXERROR
LDA SIGN6,2 색인 레지스터의 부호를 얻는다.
LDX I6REG,2 색인 레지스터의 크기를 얻는다.
SLAX 5
ADD M
CMPA ZERO(1:3)
JNE ADDERROR
STA M
1H LD3 INST(4:4) rI3 <- F필드
LD5 M
LD4 INST(5:5) r4 <- C필드
DEC4 63
J4P OPEERROR
LDA OPTABLE,4(4:4)
STA TIME(0:2)
LD2 OPTABLE,4(0:2)
JNOV 0,2 : 명령어 실행(Instruction Execuction, EX)
JMP 0,2
* INDIVIDUAL OPERATORS
MUL JMP GETV V를 얻는다.
CMPX SIGNA
ENTX 1
JE *+2
ENNX 1
STX SIGNA
STX SIGNX
MUL AREG
JMP STOREAX
GETV STJ 9F
JMP FCHECK
JMP MEMORY rA <- 메모리 크기, rX <- 부호
1H J1Z 2F
ENTX 1
SLA -1,1
SRA -1,1
2H LD2N R
SRA 5,2
9H JMP *
STOREAX STA AREG : 결과 저장(Operand Store, OS 또는 Write Back, WB)
STX XREG
OVCHECK JNOV CYCLE
ENTX 1
STX OVTOG
JMP CYCLE
끝