SlideShare une entreprise Scribd logo
1  sur  44
Télécharger pour lire hors ligne
TAOCP
              1.3.1MIX 설명
           Description of MIX

             짝수 연습문제 풀이




                     ohyecloudy
              http://ohyecloudy.com
                            아꿈사
http://cafe.naver.com/architect1.cafe

                          2011.03.12
2
MIX에서 값 하나가 99999999까지 클 수 있다면,

이를 나타내는 데에는
몇 개의 연속된 바이트들이 필요한가?
26                   27
2     < 99999999 < 2

MIX에선 1 byte가 6 bit

5 byte가 필요
6
장소 3000이 다음을 담고 있다고 하자.
다음 명령의 결과는 무엇인가?
             3000    +   5   1   200   15
(a) LDAN 3000
(b) LD2N 3000(3:4)
(c) LDX 3000(1:3)
(d) LD6 3000
(e) LDXN 3000(0:0)
3000   +     5     1       200   15

           (a) LDAN 3000

           rA에 장소 3000을 부호 바꿔서 적재


 rA    -     5     1       200   15
3000   +     5         1    200   15

           (b) LD2N 3000(3:4)

           rI2에 장소 3000을 부호 바꿔서 적재


rI2    -         200       두 번째 색인 레지스터
3000   +     5      1          200       15

              (c) LDX 3000(1:3)

              rX에 장소 3000을 적재


    rX    +     0      0     5          1   ?
                 나머지는 0을 채운다


부호까지 포함해서 적재를 안 한다면 기본 +
3000    +     5       1    200   15

            (d) LD6 3000

            rI6에 장소 3000을 적재


rI2     ?         ?

       6개를 3개에 쑤셔 넣으려니 들어가나?
       정의되지 않음
3000   +     5     1         200       15

           (e) LDXN 3000(0:0)

           rX에 장소 3000을 부호 바꿔서 적재


 rX    -     0     0     0         0   0

              나머지는 0을 채운다
8
170쪽에 나온 DIV 명령의 마지막 예에서
“이전 rX”를 교체.
DIV 명령이 수행된 후 레지스터 A, X 내용은?

        +   1235   0   3   1



        -   1234   0   3   1
-                          0   이전 rA
            +    1235          0   3   1   이전 rX
            -   0    0         0   2   0   칸 1000
DIV 1000    +   0        617       ?   ?   이후 rA
            -   0   0          0   ?   1   이후 rX


           170쪽 일단 설명
-                                 0        이전 rA
            +    1235              0   3      1        이전 rX
            -   0    0             0   2      0        칸 1000
 DIV 1000   +   0            617       ?      ?        이후 rA
            -   0        0         0   ?      1        이후 rX


      -                            0   1235       0     3   1

                    rA
부호는 rA 껄 사용                                       rX
-                          0   이전 rA
           +    1235          0   3   1   이전 rX
           -   0    0         0   2   0   칸 1000
DIV 1000   +   0        617       ?   ?   이후 rA 몫
           -   0   0          0   ?   1   이후 rX

                        나머지. 부호는 이전 rA 부호
-                          0   이전 rA
           -    1234          0   3   1   이전 rX
           -   0    0         0   2   0   칸 1000
DIV 1000   +   0        617       0   1   이후 rA
           -   0   0          0   1   1   이후 rX


           바뀐 부호는 의미 없다.
           rA 부호를 따라가기 때문

           ?가 사라졌다.
           필드가 깨지는 경우가 없음
12
rI3의 현재 내용에 2를 곱하고
그 결과를 rI3에 남겨두는 효과를 내는
하나의 명령을 찾아라.
0에 rI3를 적용

     INC3 0,3
 0에 rI3를 적용한 값을 rI3에 더한다.


결국 rI3 X 2를 한 값을 rI3에 적재한다.
16
메모리의 0000-0099칸들을 모두 0으로 설정

(a)최대한 짧은 프로그램
(b)최대한 빠른 프로그램
(a) 최대한 짧은 프로그램



STZ 0      장소 0을 0으로 채운다.

ENT1 1     rI1에 1을 적재한다.
MOVE 0(49) 장소 0을 rI1이 가리키는 1로 복사. 49개 워드
MOVE 0(50)         CONTENTS(0) -> CONTENTS(1)
                        CONTENTS(1) -> CONTENTS(2)
                        …
1 byte로 99를 표현 못해서 나눔   CONTENTS(48) -> CONTENTS(49)
- MIX에선 6bit라네~
                        끝나고 난 뒤 rI1도 변경. rI1 = 1 + 49
(b) 최대한 빠른 프로그램


      STZ 0
      STZ 1
      …
      STZ 99
18
다음의 “넘버 원” 프로그램을 수행했을 때
레지스터들과 토글, 지시자, 메모리에 생기는 변
화를 예측
STZ    1
ENNX   1
STX    1(0:1)
SLAX   1
ENNA   1         이게 넘버 원 프로그램
INCX   1
ENT1   1         갈 길이 멀어 보인다.
SRC    1         고고~
ADD    1
DEC1   -1
STZ    1
CMPA   1
MOV    -1,1(1)
NUM    1
CHAR   1
HLT    1
STZ    1
ENNX   1
STX    1(0:1)    1    +   0   0   0   0   0
SLAX   1
                 rX   -   0   0   0   0   1
ENNA   1
INCX   1
ENT1   1
SRC    1
ADD    1
DEC1   -1
STZ    1
CMPA   1
MOV    -1,1(1)
NUM    1
CHAR   1
HLT    1
STZ    1
ENNX   1
STX    1(0:1)    1    -   1   0   0   0   0
SLAX   1
                 rX   -   0   0   0   0   1
ENNA   1
INCX   1
ENT1   1
SRC    1
ADD    1
DEC1   -1
STZ    1
CMPA   1
MOV    -1,1(1)
NUM    1
CHAR   1
HLT    1
STZ    1
ENNX   1
STX    1(0:1)    1    -   1   0   0   0   0
SLAX   1
                 rA   ?   ?   ?   ?   ?   0
ENNA   1
INCX   1         rX   -   0   0   0   1   0
ENT1   1
SRC    1
ADD    1
DEC1   -1
STZ    1
CMPA   1
MOV    -1,1(1)
NUM    1
CHAR   1
HLT    1
STZ    1
ENNX   1
STX    1(0:1)    1    -   1   0   0   0   0
SLAX   1
                 rA   -   0   0   0   0   1
ENNA   1
INCX   1         rX   -   0   0   0   1   0
ENT1   1
SRC    1
ADD    1
DEC1   -1
STZ    1
CMPA   1
MOV    -1,1(1)
NUM    1
CHAR   1
HLT    1
STZ    1
ENNX   1
STX    1(0:1)    1    -   1   0   0   0   0
SLAX   1
                 rA   -   0   0   0   0   1
ENNA   1
INCX   1         rX   -   0   0   0   0   63
ENT1   1
SRC    1
ADD    1
DEC1   -1
STZ    1
CMPA   1
MOV    -1,1(1)
NUM    1
CHAR   1
HLT    1
STZ    1
ENNX   1
STX    1(0:1)     1    -   1   0   0   0   0
SLAX   1
                 rA    -   0   0   0   0   1
ENNA   1
INCX   1         rX    -   0   0   0   0   63
ENT1   1
SRC    1         rI1   +   0   0   0   0   1
ADD    1
DEC1   -1
STZ    1
CMPA   1
MOV    -1,1(1)
NUM    1
CHAR   1
HLT    1
STZ    1
ENNX   1
STX    1(0:1)     1    -   1    0   0   0   0
SLAX   1
                 rA    -   63   0   0   0   0
ENNA   1
INCX   1         rX    -   1    0   0   0   0
ENT1   1
SRC    1         rI1   +   0    0   0   0   1
ADD    1
DEC1   -1
STZ    1
CMPA   1
MOV    -1,1(1)
NUM    1
CHAR   1
HLT    1
STZ    1
ENNX   1
STX    1(0:1)     1    -   1   0   0   0   0
SLAX   1
                 rA    -   0   0   0   0   0
ENNA   1
INCX   1         rX    -   1   0   0   0   0
ENT1   1
SRC    1         rI1   +   0   0   0   0   1
ADD    1                       위넘침 토글 O
DEC1   -1
STZ    1
CMPA   1
MOV    -1,1(1)
NUM    1
CHAR   1
HLT    1
STZ    1
ENNX   1
STX    1(0:1)     1    +   0   0   0   0   0
SLAX   1
                 rA    -   0   0   0   0   0
ENNA   1
INCX   1         rX    -   1   0   0   0   0
ENT1   1
SRC    1         rI1   +   0   0   0   0   2
ADD    1                       위넘침 토글 O
DEC1   -1
STZ    1
CMPA   1
MOV    -1,1(1)
NUM    1
CHAR   1
HLT    1
STZ    1
ENNX   1
STX    1(0:1)     1    +   0   0   0   0   0
SLAX   1
                 rA    -   0   0   0   0   0
ENNA   1
INCX   1         rX    -   1   0   0   0   0
ENT1   1
SRC    1         rI1   +   0   0   0   0   2
ADD    1               비교 지시자      E   L   G
DEC1   -1
STZ    1                       위넘침 토글 O
CMPA   1
MOV    -1,1(1)
NUM    1
CHAR   1
HLT    1
STZ    1
ENNX   1
STX    1(0:1)     1    +   0   0   0   0   0
SLAX   1
                  2    +   0   0   0   0   0
ENNA   1
INCX   1         rA    -   0   0   0   0   0
ENT1   1
SRC    1         rX    -   1   0   0   0   0
ADD    1         rI1   +   0   0   0   0   3
DEC1   -1
STZ    1               비교 지시자      E   L   G
CMPA   1                       위넘침 토글 O
MOV    -1,1(1)
NUM    1
CHAR   1
HLT    1
STZ    1
ENNX   1
STX    1(0:1)     1    +   0   0     0     0   0
SLAX   1
                  2    +   0   0     0     0   0
ENNA   1
INCX   1         rA    -           10000
ENT1   1
SRC    1         rX    -   1   0     0     0   0
ADD    1         rI1   +   0   0     0     0   3
DEC1   -1
STZ    1               비교 지시자       E      L   G
CMPA   1                       위넘침 토글 O
MOV    -1,1(1)
NUM    1
CHAR   1
HLT    1
STZ    1
ENNX   1
STX    1(0:1)     1    +   0    0    0    0    0
SLAX   1
                  2    +   0    0    0    0    0
ENNA   1
INCX   1         rA    -   30   30   30   30   30
ENT1   1
SRC    1         rX    -   31   30   30   30   30
ADD    1         rI1   +   0    0    0    0    3
DEC1   -1
STZ    1               비교 지시자        E    L    G
CMPA   1                         위넘침 토글 O
MOV    -1,1(1)
NUM    1
CHAR   1
HLT    1
22
장소 2000에 어떤 정수 X.
������13 을 계산하고 그 결과를 레지스터 A에 남겨둔 채
로 종료하는 프로그램을 두 개 작성

(a) 사용하는 MIX 메모리 장소들의 수가 최소
(b) 수행 시간이 가능한 한 최소

������13 값은 하나의 워드를 넘지 않는다고 가정한다.
(a) 사용하는 MIX 메모리 장소들의 수가 최소


   3000   ENT4 12    rI4에 12를 저장
          LDA 2000   rA에 X를 저장
   3002   MUL 2000   rA와 X를 곱한 값을 rA,rX에 적재
          SLAX 5     rX에 저장된 값을 rA로 옮김
          DEC4 1     rI4를 1 감소
          J4P 3002   rI4가 0보다 크면 3002로 점프
          HLT 0

                                 공간 : 7
                                 시간 : 171u
(b) 수행 시간이 가능한 한 최소


  입력은 무조건 정수.

  ������ 13 을 구하면 된다.

  ������ 범위만 알 수 있다면 메모이제이션을 사용
  - 미리 계산해 저장해 놓고 사용
������13   < ������ 5
������������������2 ������13     < ������������������2 ������ 5
13������������������2 ������     < 5������������������2 ������
13������������������2 ������     < 5������������������2 26 , ∵ ������ < 26
    ������������������2 ������   < 30 13 = 2.307 …

������������������2 5 = 2.321 …
������������������2 6 = 2.584 …
∴ ������ ≤ ������
        주의! 책이랑 다름. 책에선 5보다 작거나 같다고 설명한다.
3000   LD1 2000     장소 2000에 있는 정수를 rI1에 적재
       LDA 3500,1   3500에 rI1값을 더한 주소값을 rA에 적재
       HLT 0
3496   (−4)13        3500에 0이 있다.
3497   (−3)13
                     2000에 -1이 저장되어 있다면
3498   (−2)13
                     3500 – 1, 즉 3499에 저장된 값이
3499   (−1)13        rA에 적재
3500   013
3501   113
3502   213
3503   313
                      공간 : 12
3504   413            시간 : 4u
                      - LD1 : 2u
                      - LDA : 2u
24          rA
            rX


            rA
                 +
                 +


                 +
                     0
                     e


                     a
                         a
                         f


                         b
                             b
                             g


                             c
                                 c
                                 h


                                 d
                                     d
                                     i


                                     e
            rX   +   0   f   g   h   i

24. 변경하는 프로그램 두 개를 작성.

(a) 최소의 메모리 공간
(b) 최소의 수행 시간
(a) 최소의 메모리 공간


                        DIV 3500
  (3500)                +10000


  +     0       a       b       c   d      e    f       g       h   i


                                        DIV +10000


   rA       +       a       b       c      d    e           몫
   rX       +       0       f       g      h        i       나머지
(b) 최소의 수행 시간

                rA   +   0   a   b   c   d
 SRC 4
                rX   +   e   f   g   h   i

 SRA 1
                rA   +   f   g   h   i   0
                rX   +   a   b   c   d   e
 SLC 5
                rA   +   0   f   g   h   i
                rX   +   a   b   c   d   e

                rA   +   a   b   c   d   e
                rX   +   0   f   g   h   i
[TAOCP] 1.3.1 MIX 설명, 짝수 연습문제 풀이
[TAOCP] 1.3.1 MIX 설명, 짝수 연습문제 풀이

Contenu connexe

Plus de 종빈 오

적당한 스터디 발표자료 만들기 2.0
적당한 스터디 발표자료 만들기 2.0적당한 스터디 발표자료 만들기 2.0
적당한 스터디 발표자료 만들기 2.0종빈 오
 
페리 수열(Farey sequence)
페리 수열(Farey sequence)페리 수열(Farey sequence)
페리 수열(Farey sequence)종빈 오
 
내가 본 미드 이야기
내가 본 미드 이야기내가 본 미드 이야기
내가 본 미드 이야기종빈 오
 
비트 경제와 공짜
비트 경제와 공짜비트 경제와 공짜
비트 경제와 공짜종빈 오
 
[NDC12] 게임 물리 엔진의 내부 동작 원리 이해
[NDC12] 게임 물리 엔진의 내부 동작 원리 이해[NDC12] 게임 물리 엔진의 내부 동작 원리 이해
[NDC12] 게임 물리 엔진의 내부 동작 원리 이해종빈 오
 
[Windows via c/c++] 4장 프로세스
[Windows via c/c++] 4장 프로세스[Windows via c/c++] 4장 프로세스
[Windows via c/c++] 4장 프로세스종빈 오
 
Intrusive data structure 소개
Intrusive data structure 소개Intrusive data structure 소개
Intrusive data structure 소개종빈 오
 
2011 아꿈사 오전반 포스트모템
2011 아꿈사 오전반 포스트모템2011 아꿈사 오전반 포스트모템
2011 아꿈사 오전반 포스트모템종빈 오
 
[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81
[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81
[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81종빈 오
 
[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments종빈 오
 
넘쳐나는 정보 소화 노하우
넘쳐나는 정보 소화 노하우넘쳐나는 정보 소화 노하우
넘쳐나는 정보 소화 노하우종빈 오
 
[Domain driven design] 17장 전략의 종합
[Domain driven design] 17장 전략의 종합[Domain driven design] 17장 전략의 종합
[Domain driven design] 17장 전략의 종합종빈 오
 
LevelDB 간단한 소개
LevelDB 간단한 소개LevelDB 간단한 소개
LevelDB 간단한 소개종빈 오
 
[GEG1] 2.the game asset pipeline
[GEG1] 2.the game asset pipeline[GEG1] 2.the game asset pipeline
[GEG1] 2.the game asset pipeline종빈 오
 
[TAOCP] 2.2.3 연결된 할당 - 위상정렬
[TAOCP] 2.2.3 연결된 할당 - 위상정렬[TAOCP] 2.2.3 연결된 할당 - 위상정렬
[TAOCP] 2.2.3 연결된 할당 - 위상정렬종빈 오
 
[TAOCP] 1.3.1 MIX 설명
[TAOCP] 1.3.1 MIX 설명[TAOCP] 1.3.1 MIX 설명
[TAOCP] 1.3.1 MIX 설명종빈 오
 
[GEG1] 10.camera-centric engine design for multithreaded rendering
[GEG1] 10.camera-centric engine design for multithreaded rendering[GEG1] 10.camera-centric engine design for multithreaded rendering
[GEG1] 10.camera-centric engine design for multithreaded rendering종빈 오
 
[TAOCP] 1.2.1 수학적 귀납법
[TAOCP] 1.2.1 수학적 귀납법[TAOCP] 1.2.1 수학적 귀납법
[TAOCP] 1.2.1 수학적 귀납법종빈 오
 
ManagingHumans/chap1~6
ManagingHumans/chap1~6ManagingHumans/chap1~6
ManagingHumans/chap1~6종빈 오
 
아꿈사 매니저 인사
아꿈사 매니저 인사아꿈사 매니저 인사
아꿈사 매니저 인사종빈 오
 

Plus de 종빈 오 (20)

적당한 스터디 발표자료 만들기 2.0
적당한 스터디 발표자료 만들기 2.0적당한 스터디 발표자료 만들기 2.0
적당한 스터디 발표자료 만들기 2.0
 
페리 수열(Farey sequence)
페리 수열(Farey sequence)페리 수열(Farey sequence)
페리 수열(Farey sequence)
 
내가 본 미드 이야기
내가 본 미드 이야기내가 본 미드 이야기
내가 본 미드 이야기
 
비트 경제와 공짜
비트 경제와 공짜비트 경제와 공짜
비트 경제와 공짜
 
[NDC12] 게임 물리 엔진의 내부 동작 원리 이해
[NDC12] 게임 물리 엔진의 내부 동작 원리 이해[NDC12] 게임 물리 엔진의 내부 동작 원리 이해
[NDC12] 게임 물리 엔진의 내부 동작 원리 이해
 
[Windows via c/c++] 4장 프로세스
[Windows via c/c++] 4장 프로세스[Windows via c/c++] 4장 프로세스
[Windows via c/c++] 4장 프로세스
 
Intrusive data structure 소개
Intrusive data structure 소개Intrusive data structure 소개
Intrusive data structure 소개
 
2011 아꿈사 오전반 포스트모템
2011 아꿈사 오전반 포스트모템2011 아꿈사 오전반 포스트모템
2011 아꿈사 오전반 포스트모템
 
[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81
[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81
[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81
 
[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments
 
넘쳐나는 정보 소화 노하우
넘쳐나는 정보 소화 노하우넘쳐나는 정보 소화 노하우
넘쳐나는 정보 소화 노하우
 
[Domain driven design] 17장 전략의 종합
[Domain driven design] 17장 전략의 종합[Domain driven design] 17장 전략의 종합
[Domain driven design] 17장 전략의 종합
 
LevelDB 간단한 소개
LevelDB 간단한 소개LevelDB 간단한 소개
LevelDB 간단한 소개
 
[GEG1] 2.the game asset pipeline
[GEG1] 2.the game asset pipeline[GEG1] 2.the game asset pipeline
[GEG1] 2.the game asset pipeline
 
[TAOCP] 2.2.3 연결된 할당 - 위상정렬
[TAOCP] 2.2.3 연결된 할당 - 위상정렬[TAOCP] 2.2.3 연결된 할당 - 위상정렬
[TAOCP] 2.2.3 연결된 할당 - 위상정렬
 
[TAOCP] 1.3.1 MIX 설명
[TAOCP] 1.3.1 MIX 설명[TAOCP] 1.3.1 MIX 설명
[TAOCP] 1.3.1 MIX 설명
 
[GEG1] 10.camera-centric engine design for multithreaded rendering
[GEG1] 10.camera-centric engine design for multithreaded rendering[GEG1] 10.camera-centric engine design for multithreaded rendering
[GEG1] 10.camera-centric engine design for multithreaded rendering
 
[TAOCP] 1.2.1 수학적 귀납법
[TAOCP] 1.2.1 수학적 귀납법[TAOCP] 1.2.1 수학적 귀납법
[TAOCP] 1.2.1 수학적 귀납법
 
ManagingHumans/chap1~6
ManagingHumans/chap1~6ManagingHumans/chap1~6
ManagingHumans/chap1~6
 
아꿈사 매니저 인사
아꿈사 매니저 인사아꿈사 매니저 인사
아꿈사 매니저 인사
 

[TAOCP] 1.3.1 MIX 설명, 짝수 연습문제 풀이

  • 1. TAOCP 1.3.1MIX 설명 Description of MIX 짝수 연습문제 풀이 ohyecloudy http://ohyecloudy.com 아꿈사 http://cafe.naver.com/architect1.cafe 2011.03.12
  • 2. 2 MIX에서 값 하나가 99999999까지 클 수 있다면, 이를 나타내는 데에는 몇 개의 연속된 바이트들이 필요한가?
  • 3. 26 27 2 < 99999999 < 2 MIX에선 1 byte가 6 bit 5 byte가 필요
  • 4. 6 장소 3000이 다음을 담고 있다고 하자. 다음 명령의 결과는 무엇인가? 3000 + 5 1 200 15 (a) LDAN 3000 (b) LD2N 3000(3:4) (c) LDX 3000(1:3) (d) LD6 3000 (e) LDXN 3000(0:0)
  • 5. 3000 + 5 1 200 15 (a) LDAN 3000 rA에 장소 3000을 부호 바꿔서 적재 rA - 5 1 200 15
  • 6. 3000 + 5 1 200 15 (b) LD2N 3000(3:4) rI2에 장소 3000을 부호 바꿔서 적재 rI2 - 200 두 번째 색인 레지스터
  • 7. 3000 + 5 1 200 15 (c) LDX 3000(1:3) rX에 장소 3000을 적재 rX + 0 0 5 1 ? 나머지는 0을 채운다 부호까지 포함해서 적재를 안 한다면 기본 +
  • 8. 3000 + 5 1 200 15 (d) LD6 3000 rI6에 장소 3000을 적재 rI2 ? ? 6개를 3개에 쑤셔 넣으려니 들어가나? 정의되지 않음
  • 9. 3000 + 5 1 200 15 (e) LDXN 3000(0:0) rX에 장소 3000을 부호 바꿔서 적재 rX - 0 0 0 0 0 나머지는 0을 채운다
  • 10. 8 170쪽에 나온 DIV 명령의 마지막 예에서 “이전 rX”를 교체. DIV 명령이 수행된 후 레지스터 A, X 내용은? + 1235 0 3 1 - 1234 0 3 1
  • 11. - 0 이전 rA + 1235 0 3 1 이전 rX - 0 0 0 2 0 칸 1000 DIV 1000 + 0 617 ? ? 이후 rA - 0 0 0 ? 1 이후 rX 170쪽 일단 설명
  • 12. - 0 이전 rA + 1235 0 3 1 이전 rX - 0 0 0 2 0 칸 1000 DIV 1000 + 0 617 ? ? 이후 rA - 0 0 0 ? 1 이후 rX - 0 1235 0 3 1 rA 부호는 rA 껄 사용 rX
  • 13. - 0 이전 rA + 1235 0 3 1 이전 rX - 0 0 0 2 0 칸 1000 DIV 1000 + 0 617 ? ? 이후 rA 몫 - 0 0 0 ? 1 이후 rX 나머지. 부호는 이전 rA 부호
  • 14. - 0 이전 rA - 1234 0 3 1 이전 rX - 0 0 0 2 0 칸 1000 DIV 1000 + 0 617 0 1 이후 rA - 0 0 0 1 1 이후 rX 바뀐 부호는 의미 없다. rA 부호를 따라가기 때문 ?가 사라졌다. 필드가 깨지는 경우가 없음
  • 15. 12 rI3의 현재 내용에 2를 곱하고 그 결과를 rI3에 남겨두는 효과를 내는 하나의 명령을 찾아라.
  • 16. 0에 rI3를 적용 INC3 0,3 0에 rI3를 적용한 값을 rI3에 더한다. 결국 rI3 X 2를 한 값을 rI3에 적재한다.
  • 17. 16 메모리의 0000-0099칸들을 모두 0으로 설정 (a)최대한 짧은 프로그램 (b)최대한 빠른 프로그램
  • 18. (a) 최대한 짧은 프로그램 STZ 0 장소 0을 0으로 채운다. ENT1 1 rI1에 1을 적재한다. MOVE 0(49) 장소 0을 rI1이 가리키는 1로 복사. 49개 워드 MOVE 0(50) CONTENTS(0) -> CONTENTS(1) CONTENTS(1) -> CONTENTS(2) … 1 byte로 99를 표현 못해서 나눔 CONTENTS(48) -> CONTENTS(49) - MIX에선 6bit라네~ 끝나고 난 뒤 rI1도 변경. rI1 = 1 + 49
  • 19. (b) 최대한 빠른 프로그램 STZ 0 STZ 1 … STZ 99
  • 20. 18 다음의 “넘버 원” 프로그램을 수행했을 때 레지스터들과 토글, 지시자, 메모리에 생기는 변 화를 예측
  • 21. STZ 1 ENNX 1 STX 1(0:1) SLAX 1 ENNA 1 이게 넘버 원 프로그램 INCX 1 ENT1 1 갈 길이 멀어 보인다. SRC 1 고고~ ADD 1 DEC1 -1 STZ 1 CMPA 1 MOV -1,1(1) NUM 1 CHAR 1 HLT 1
  • 22. STZ 1 ENNX 1 STX 1(0:1) 1 + 0 0 0 0 0 SLAX 1 rX - 0 0 0 0 1 ENNA 1 INCX 1 ENT1 1 SRC 1 ADD 1 DEC1 -1 STZ 1 CMPA 1 MOV -1,1(1) NUM 1 CHAR 1 HLT 1
  • 23. STZ 1 ENNX 1 STX 1(0:1) 1 - 1 0 0 0 0 SLAX 1 rX - 0 0 0 0 1 ENNA 1 INCX 1 ENT1 1 SRC 1 ADD 1 DEC1 -1 STZ 1 CMPA 1 MOV -1,1(1) NUM 1 CHAR 1 HLT 1
  • 24. STZ 1 ENNX 1 STX 1(0:1) 1 - 1 0 0 0 0 SLAX 1 rA ? ? ? ? ? 0 ENNA 1 INCX 1 rX - 0 0 0 1 0 ENT1 1 SRC 1 ADD 1 DEC1 -1 STZ 1 CMPA 1 MOV -1,1(1) NUM 1 CHAR 1 HLT 1
  • 25. STZ 1 ENNX 1 STX 1(0:1) 1 - 1 0 0 0 0 SLAX 1 rA - 0 0 0 0 1 ENNA 1 INCX 1 rX - 0 0 0 1 0 ENT1 1 SRC 1 ADD 1 DEC1 -1 STZ 1 CMPA 1 MOV -1,1(1) NUM 1 CHAR 1 HLT 1
  • 26. STZ 1 ENNX 1 STX 1(0:1) 1 - 1 0 0 0 0 SLAX 1 rA - 0 0 0 0 1 ENNA 1 INCX 1 rX - 0 0 0 0 63 ENT1 1 SRC 1 ADD 1 DEC1 -1 STZ 1 CMPA 1 MOV -1,1(1) NUM 1 CHAR 1 HLT 1
  • 27. STZ 1 ENNX 1 STX 1(0:1) 1 - 1 0 0 0 0 SLAX 1 rA - 0 0 0 0 1 ENNA 1 INCX 1 rX - 0 0 0 0 63 ENT1 1 SRC 1 rI1 + 0 0 0 0 1 ADD 1 DEC1 -1 STZ 1 CMPA 1 MOV -1,1(1) NUM 1 CHAR 1 HLT 1
  • 28. STZ 1 ENNX 1 STX 1(0:1) 1 - 1 0 0 0 0 SLAX 1 rA - 63 0 0 0 0 ENNA 1 INCX 1 rX - 1 0 0 0 0 ENT1 1 SRC 1 rI1 + 0 0 0 0 1 ADD 1 DEC1 -1 STZ 1 CMPA 1 MOV -1,1(1) NUM 1 CHAR 1 HLT 1
  • 29. STZ 1 ENNX 1 STX 1(0:1) 1 - 1 0 0 0 0 SLAX 1 rA - 0 0 0 0 0 ENNA 1 INCX 1 rX - 1 0 0 0 0 ENT1 1 SRC 1 rI1 + 0 0 0 0 1 ADD 1 위넘침 토글 O DEC1 -1 STZ 1 CMPA 1 MOV -1,1(1) NUM 1 CHAR 1 HLT 1
  • 30. STZ 1 ENNX 1 STX 1(0:1) 1 + 0 0 0 0 0 SLAX 1 rA - 0 0 0 0 0 ENNA 1 INCX 1 rX - 1 0 0 0 0 ENT1 1 SRC 1 rI1 + 0 0 0 0 2 ADD 1 위넘침 토글 O DEC1 -1 STZ 1 CMPA 1 MOV -1,1(1) NUM 1 CHAR 1 HLT 1
  • 31. STZ 1 ENNX 1 STX 1(0:1) 1 + 0 0 0 0 0 SLAX 1 rA - 0 0 0 0 0 ENNA 1 INCX 1 rX - 1 0 0 0 0 ENT1 1 SRC 1 rI1 + 0 0 0 0 2 ADD 1 비교 지시자 E L G DEC1 -1 STZ 1 위넘침 토글 O CMPA 1 MOV -1,1(1) NUM 1 CHAR 1 HLT 1
  • 32. STZ 1 ENNX 1 STX 1(0:1) 1 + 0 0 0 0 0 SLAX 1 2 + 0 0 0 0 0 ENNA 1 INCX 1 rA - 0 0 0 0 0 ENT1 1 SRC 1 rX - 1 0 0 0 0 ADD 1 rI1 + 0 0 0 0 3 DEC1 -1 STZ 1 비교 지시자 E L G CMPA 1 위넘침 토글 O MOV -1,1(1) NUM 1 CHAR 1 HLT 1
  • 33. STZ 1 ENNX 1 STX 1(0:1) 1 + 0 0 0 0 0 SLAX 1 2 + 0 0 0 0 0 ENNA 1 INCX 1 rA - 10000 ENT1 1 SRC 1 rX - 1 0 0 0 0 ADD 1 rI1 + 0 0 0 0 3 DEC1 -1 STZ 1 비교 지시자 E L G CMPA 1 위넘침 토글 O MOV -1,1(1) NUM 1 CHAR 1 HLT 1
  • 34. STZ 1 ENNX 1 STX 1(0:1) 1 + 0 0 0 0 0 SLAX 1 2 + 0 0 0 0 0 ENNA 1 INCX 1 rA - 30 30 30 30 30 ENT1 1 SRC 1 rX - 31 30 30 30 30 ADD 1 rI1 + 0 0 0 0 3 DEC1 -1 STZ 1 비교 지시자 E L G CMPA 1 위넘침 토글 O MOV -1,1(1) NUM 1 CHAR 1 HLT 1
  • 35. 22 장소 2000에 어떤 정수 X. ������13 을 계산하고 그 결과를 레지스터 A에 남겨둔 채 로 종료하는 프로그램을 두 개 작성 (a) 사용하는 MIX 메모리 장소들의 수가 최소 (b) 수행 시간이 가능한 한 최소 ������13 값은 하나의 워드를 넘지 않는다고 가정한다.
  • 36. (a) 사용하는 MIX 메모리 장소들의 수가 최소 3000 ENT4 12 rI4에 12를 저장 LDA 2000 rA에 X를 저장 3002 MUL 2000 rA와 X를 곱한 값을 rA,rX에 적재 SLAX 5 rX에 저장된 값을 rA로 옮김 DEC4 1 rI4를 1 감소 J4P 3002 rI4가 0보다 크면 3002로 점프 HLT 0 공간 : 7 시간 : 171u
  • 37. (b) 수행 시간이 가능한 한 최소 입력은 무조건 정수. ������ 13 을 구하면 된다. ������ 범위만 알 수 있다면 메모이제이션을 사용 - 미리 계산해 저장해 놓고 사용
  • 38. ������13 < ������ 5 ������������������2 ������13 < ������������������2 ������ 5 13������������������2 ������ < 5������������������2 ������ 13������������������2 ������ < 5������������������2 26 , ∵ ������ < 26 ������������������2 ������ < 30 13 = 2.307 … ������������������2 5 = 2.321 … ������������������2 6 = 2.584 … ∴ ������ ≤ ������ 주의! 책이랑 다름. 책에선 5보다 작거나 같다고 설명한다.
  • 39. 3000 LD1 2000 장소 2000에 있는 정수를 rI1에 적재 LDA 3500,1 3500에 rI1값을 더한 주소값을 rA에 적재 HLT 0 3496 (−4)13 3500에 0이 있다. 3497 (−3)13 2000에 -1이 저장되어 있다면 3498 (−2)13 3500 – 1, 즉 3499에 저장된 값이 3499 (−1)13 rA에 적재 3500 013 3501 113 3502 213 3503 313 공간 : 12 3504 413 시간 : 4u - LD1 : 2u - LDA : 2u
  • 40. 24 rA rX rA + + + 0 e a a f b b g c c h d d i e rX + 0 f g h i 24. 변경하는 프로그램 두 개를 작성. (a) 최소의 메모리 공간 (b) 최소의 수행 시간
  • 41. (a) 최소의 메모리 공간 DIV 3500 (3500) +10000 + 0 a b c d e f g h i DIV +10000 rA + a b c d e 몫 rX + 0 f g h i 나머지
  • 42. (b) 최소의 수행 시간 rA + 0 a b c d SRC 4 rX + e f g h i SRA 1 rA + f g h i 0 rX + a b c d e SLC 5 rA + 0 f g h i rX + a b c d e rA + a b c d e rX + 0 f g h i