SlideShare uma empresa Scribd logo
1 de 15
TAOCP – 1.4.3 해석루틴 아꿈사 김성안 <wakeup01@gmail.com>
해석 루틴 해석 루틴(=해석기):  ,[object Object]
다른 프로그램은 유사 기계어로 작성유사기계어:  ,[object Object]
보통 연산 코드, 주소 등으로 구성,[object Object]
해석 루틴 Wikipedia. http://en.wikipedia.org/wiki/File:CLR_diag.svg
해석기가 응용되는 까닭 간결하고 효율적인 방식으로 표현 :  ,[object Object],훌륭한 의사 소통 수단 :  ,[object Object],기계에 독립적 :  ,[object Object],[object Object]
프로세서 명령어 특성 ALU 연산:  ,[object Object],메모리 로드(load) :  ,[object Object]
그 내용을 읽어 지정된 레지스터 값에 읽음메모리 스토어(store) :  ,[object Object]
지정된 메모리 주소에 씀분기문:  ,[object Object]
다음에 수행될 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

Mais conteúdo relacionado

Semelhante a 20110212 taocp 1.4.3

Lightning talk - 8
Lightning talk - 8Lightning talk - 8
Lightning talk - 8DonggyuKim21
 
ASP.NET의 이해
ASP.NET의 이해ASP.NET의 이해
ASP.NET의 이해Daniel Shin
 
맛만 보자 액터 모델이란
맛만 보자 액터 모델이란 맛만 보자 액터 모델이란
맛만 보자 액터 모델이란 jbugkorea
 
Concurrent Programming (Java thread 다루기)
Concurrent Programming (Java thread 다루기)Concurrent Programming (Java thread 다루기)
Concurrent Programming (Java thread 다루기)JungGeun Lee
 
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스Seunghwa Song
 
Why OpenStack is Operating System?
Why OpenStack is Operating System?Why OpenStack is Operating System?
Why OpenStack is Operating System?유명환 FunFun Yoo
 
System Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsSystem Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsJuseok Kim
 
Linux programming study
Linux programming studyLinux programming study
Linux programming studyYunseok Lee
 
C언어 들어가기
C언어 들어가기C언어 들어가기
C언어 들어가기jaypi Ko
 
C언어 들어가기
C언어 들어가기C언어 들어가기
C언어 들어가기jaypi Ko
 
Mirantis open stack deployment automation
Mirantis open stack deployment automationMirantis open stack deployment automation
Mirantis open stack deployment automationWooKyun Jeon
 
파싱테이블 만들기 Project
파싱테이블 만들기 Project파싱테이블 만들기 Project
파싱테이블 만들기 ProjectK
 
c++ API디자인 ch9. 발표자료
c++ API디자인 ch9. 발표자료c++ API디자인 ch9. 발표자료
c++ API디자인 ch9. 발표자료Mungyu Choi
 

Semelhante a 20110212 taocp 1.4.3 (18)

Lightning talk - 8
Lightning talk - 8Lightning talk - 8
Lightning talk - 8
 
ASP.NET의 이해
ASP.NET의 이해ASP.NET의 이해
ASP.NET의 이해
 
2015.07.01
2015.07.012015.07.01
2015.07.01
 
맛만 보자 액터 모델이란
맛만 보자 액터 모델이란 맛만 보자 액터 모델이란
맛만 보자 액터 모델이란
 
Concurrent Programming (Java thread 다루기)
Concurrent Programming (Java thread 다루기)Concurrent Programming (Java thread 다루기)
Concurrent Programming (Java thread 다루기)
 
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
 
Why OpenStack is Operating System?
Why OpenStack is Operating System?Why OpenStack is Operating System?
Why OpenStack is Operating System?
 
System Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsSystem Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOps
 
Linux programming study
Linux programming studyLinux programming study
Linux programming study
 
C언어 들어가기
C언어 들어가기C언어 들어가기
C언어 들어가기
 
C언어 들어가기
C언어 들어가기C언어 들어가기
C언어 들어가기
 
Mirantis open stack deployment automation
Mirantis open stack deployment automationMirantis open stack deployment automation
Mirantis open stack deployment automation
 
ice_grad
ice_gradice_grad
ice_grad
 
파싱테이블 만들기 Project
파싱테이블 만들기 Project파싱테이블 만들기 Project
파싱테이블 만들기 Project
 
os question
os questionos question
os question
 
c++ API디자인 ch9. 발표자료
c++ API디자인 ch9. 발표자료c++ API디자인 ch9. 발표자료
c++ API디자인 ch9. 발표자료
 
Ch09
Ch09Ch09
Ch09
 
7 8 1
7 8 17 8 1
7 8 1
 

20110212 taocp 1.4.3

  • 1. TAOCP – 1.4.3 해석루틴 아꿈사 김성안 <wakeup01@gmail.com>
  • 2.
  • 3.
  • 4.
  • 5. 해석 루틴 Wikipedia. http://en.wikipedia.org/wiki/File:CLR_diag.svg
  • 6.
  • 7.
  • 8.
  • 9.
  • 10. 다음에 수행될 PC를 얻음김민장. 프로그래머가 몰랐던 멀티코어 CPU 이야기. 서울: 한빛 미디어, 2010.
  • 11. 프로세서 명령어 처리 단계 1. 명령어 인출(Instruction Fetch, IF) 2. 명령어 해독(Instruction Decoding, ID) 3. 피연산자 인출(Operands Fetch, OF) 4. 명령어 실행(Instruction Execuction, EX) 5. 결과 저장(Operand Store, OS) 김민장. 프로그래머가 몰랐던 멀티코어 CPU 이야기. 서울: 한빛 미디어, 2010.
  • 12. 프로세서 명령어 처리 단계 while (has_instruction()) { fetch(); decode(); operands_fetch(); execution(); operand_store(); } 김민장. 프로그래머가 몰랐던 멀티코어 CPU 이야기. 서울: 한빛 미디어, 2010.
  • 14. * 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
  • 15. * 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
  • 16.
  • 17.
  • 18.