TAOCP – 1.4.3 해석루틴아꿈사김성안<wakeup01@gmail.com>
해석 루틴해석 루틴(=해석기): 다른 프로그램의 명령들을 수행하는 컴퓨터 프로그램
다른 프로그램은 유사 기계어로 작성유사기계어: 어떠한 명령을 표현하는 한 가지 방식
보통 연산 코드, 주소 등으로 구성해석 루틴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	3500BEGIN	STZ	TIME(0:2)		STZ	OVTOG		STZ 	COMPI		ENT6	0		장소 0에서 첫 번째 명령을 가져온다.CYCLE	LDA	CLOCK		: 제어 루틴의 시작TIME		INCA	0		STA	CLOCKLDA	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	M1H		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 OPERATORSMUL		JMP	GETV		V를 얻는다.		CMPX	SIGNA		ENTX	1		JE	*+2		ENNX	1		STX	SIGNA		STX	SIGNX		MUL	AREG		JMP	STOREAXGETV		STJ	9F		JMP	FCHECK		JMP	MEMORY		rA <- 메모리 크기, rX <- 부호1H		J1Z	2F		ENTX	1		SLA	-1,1		SRA	-1,12H		LD2N	R		SRA	5,29H		JMP	*STOREAX	STA	AREG		 : 결과 저장(Operand Store, OS 또는 Write Back, WB)		STX	XREGOVCHECK	JNOV	CYCLE		ENTX	1		STX	OVTOG		JMP	CYCLE

20110212 taocp 1.4.3

  • 1.
    TAOCP – 1.4.3해석루틴아꿈사김성안<[email protected]>
  • 2.
    해석 루틴해석 루틴(=해석기):다른 프로그램의 명령들을 수행하는 컴퓨터 프로그램
  • 3.
    다른 프로그램은 유사기계어로 작성유사기계어: 어떠한 명령을 표현하는 한 가지 방식
  • 4.
    보통 연산 코드,주소 등으로 구성해석 루틴ex) .NET framework, Java Virtual Machine도 일종의 해석기
  • 5.
  • 6.
    해석기가 응용되는 까닭간결하고효율적인 방식으로 표현 : 유사 기계어는 복잡한 의사 결정 및 행동 절차를 간결하고 효율적인 방식으로 표현훌륭한 의사 소통 수단 : 다중 패스 공정에서 패스들 사이의 훌륭한 의사 소통 수단기계에 독립적 : 컴퓨터가 바뀐다고 해도 해석기만 다시 작성하면 됨MIX 시뮬레이터시뮬레이터(=에뮬레이터) : 해석 루틴에 제공된 언어가 다른 컴퓨터의 기계어인 경우일 때의 해석기MIX로 작성된 MIX 시뮬레이터
  • 7.
    프로세서 명령어 특성ALU연산: 사칙 연산, 비트 논리 연산메모리 로드(load) : 피연산자에 기록된 메모리 주소를 구해
  • 8.
    그 내용을 읽어지정된 레지스터 값에 읽음메모리 스토어(store) : 메모리 로드와 반대로 주어진 레지스터의 내용을
  • 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.
  • 13.
  • 14.
    * MIX SIMULATOR ORIG 3500BEGIN STZ TIME(0:2) STZ OVTOG STZ COMPI ENT6 0 장소 0에서 첫 번째 명령을 가져온다.CYCLE LDA CLOCK : 제어 루틴의 시작TIME INCA 0 STA CLOCKLDA 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 M1H 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 OPERATORSMUL JMP GETV V를얻는다. CMPX SIGNA ENTX 1 JE *+2 ENNX 1 STX SIGNA STX SIGNX MUL AREG JMP STOREAXGETV STJ 9F JMP FCHECK JMP MEMORY rA <- 메모리 크기, rX <- 부호1H J1Z 2F ENTX 1 SLA -1,1 SRA -1,12H LD2N R SRA 5,29H JMP *STOREAX STA AREG : 결과 저장(Operand Store, OS 또는 Write Back, WB) STX XREGOVCHECK JNOV CYCLE ENTX 1 STX OVTOG JMP CYCLE
  • 18.