• Like
20110212 taocp 1.4.3
Upcoming SlideShare
Loading in...5
×

20110212 taocp 1.4.3

  • 635 views
Uploaded on

taocp 1.4.3

taocp 1.4.3

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
635
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
1
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. TAOCP – 1.4.3 해석루틴
    아꿈사
    김성안
    <wakeup01@gmail.com>
  • 2. 해석 루틴
    해석 루틴(=해석기):
    • 다른 프로그램의 명령들을 수행하는 컴퓨터 프로그램
    • 3. 다른 프로그램은 유사 기계어로 작성
    유사기계어:
    • 어떠한 명령을 표현하는 한 가지 방식
    • 4. 보통 연산 코드, 주소 등으로 구성
  • 해석 루틴
    ex) .NET framework, Java Virtual Machine도 일종의 해석기
  • 5. 해석 루틴
    Wikipedia. http://en.wikipedia.org/wiki/File:CLR_diag.svg
  • 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. MIX 시뮬레이터
  • 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.