TAOCP – 1.4.3 해석루틴<br />아꿈사<br />김성안<br /><wakeup01@gmail.com><br />
해석 루틴<br />해석 루틴(=해석기): <br /><ul><li>다른 프로그램의 명령들을 수행하는 컴퓨터 프로그램
다른 프로그램은 유사 기계어로 작성</li></ul>유사기계어: <br /><ul><li>어떠한 명령을 표현하는 한 가지 방식
보통 연산 코드, 주소 등으로 구성</li></li></ul><li>해석 루틴<br />ex) .NET framework, Java Virtual Machine도 일종의 해석기<br />
해석 루틴<br />Wikipedia. http://en.wikipedia.org/wiki/File:CLR_diag.svg<br />
해석기가 응용되는 까닭<br />간결하고 효율적인 방식으로 표현 : <br /><ul><li>유사 기계어는 복잡한 의사 결정 및 행동 절차를 간결하고 효율적인 방식으로 표현</li></ul>훌륭한 의사 소통 수단 : <...
프로세서 명령어 특성<br />ALU 연산: <br /><ul><li>사칙 연산, 비트 논리 연산</li></ul>메모리 로드(load) : <br /><ul><li>피연산자에 기록된 메모리 주소를 구해
그 내용을 읽어 지정된 레지스터 값에 읽음</li></ul>메모리 스토어(store) : <br /><ul><li>메모리 로드와 반대로 주어진 레지스터의 내용을
지정된 메모리 주소에 씀</li></ul>분기문: <br /><ul><li>주어진 조건을 계산해(조건 분기일 때)
다음에 수행될 PC를 얻음</li></ul>김민장. 프로그래머가 몰랐던 멀티코어 CPU 이야기. 서울: 한빛 미디어, 2010.<br />
프로세서 명령어 처리 단계<br />1. 명령어 인출(Instruction Fetch, IF)<br />2. 명령어 해독(Instruction Decoding, ID)<br />3. 피연산자 인출(Operands Fet...
프로세서 명령어 처리 단계<br />while (has_instruction())<br />{<br />	fetch();<br />	decode();<br />operands_fetch();<br />	execution...
MIX 시뮬레이터<br />
* MIX SIMULATOR<br />		ORIG	3500<br />BEGIN	STZ	TIME(0:2)<br />		STZ	OVTOG<br />		STZ 	COMPI<br />		ENT6	0		장소 0에서 첫 번째 명령...
* INDIVIDUAL OPERATORS<br />MUL		JMP	GETV		V를 얻는다.<br />		CMPX	SIGNA<br />		ENTX	1<br />		JE	*+2<br />		ENNX	1<br />		STX	...
Upcoming SlideShare
Loading in …5
×

20110212 taocp 1.4.3

933 views

Published on

taocp 1.4.3

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
933
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

20110212 taocp 1.4.3

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

×