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

44
1.3.1MIX 설명 Description of MIX 짝수 연습문제 풀이 ohyecloudy http://ohyecloudy.com 아꿈사 http://cafe.naver.com/architect1.cafe 2011.03.12 TAOCP

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

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

1.3.1MIX 설명 Description of MIX

짝수 연습문제 풀이

ohyecloudy http://ohyecloudy.com

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

2011.03.12

TAOCP

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

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

이를 나타내는 데에는

몇 개의 연속된 바이트들이 필요한가?

2

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

226 < 99999999 < 227

MIX에선 1 byte가 6 bit

5 byte가 필요

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

6 장소 3000이 다음을 담고 있다고 하자. 다음 명령의 결과는 무엇인가? (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

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

3000 + 5 1 200 15

rA - 5 1 200 15

(a) LDAN 3000 rA에 장소 3000을 부호 바꿔서 적재

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

3000 + 5 1 200 15

rI2 - 200

(b) LD2N 3000(3:4) rI2에 장소 3000을 부호 바꿔서 적재

두 번째 색인 레지스터

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

3000 + 5 1 200 15

rX + 0 0 5 1 ?

(c) LDX 3000(1:3) rX에 장소 3000을 적재

부호까지 포함해서 적재를 안 한다면 기본 +

나머지는 0을 채운다

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

3000 + 5 1 200 15

rI2 ? ?

(d) LD6 3000 rI6에 장소 3000을 적재

6개를 3개에 쑤셔 넣으려니 들어가나? 정의되지 않음

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

3000 + 5 1 200 15

rX - 0 0 0 0 0

(e) LDXN 3000(0:0) rX에 장소 3000을 부호 바꿔서 적재

나머지는 0을 채운다

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

8 170쪽에 나온 DIV 명령의 마지막 예에서

“이전 rX”를 교체.

DIV 명령이 수행된 후 레지스터 A, X 내용은?

+ 1235 0 3 1

- 1234 0 3 1

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

- 0 이전 rA

+ 1235 0 3 1 이전 rX

- 0 0 0 2 0 칸 1000

DIV 1000 + 0 617 ? ? 이후 rA

- 0 0 0 ? 1 이후 rX

170쪽 일단 설명

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

- 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

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

- 0 이전 rA

+ 1235 0 3 1 이전 rX

- 0 0 0 2 0 칸 1000

DIV 1000 + 0 617 ? ? 이후 rA

- 0 0 0 ? 1 이후 rX

나머지. 부호는 이전 rA 부호

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

- 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 부호를 따라가기 때문 ?가 사라졌다. 필드가 깨지는 경우가 없음

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

12 rI3의 현재 내용에 2를 곱하고

그 결과를 rI3에 남겨두는 효과를 내는

하나의 명령을 찾아라.

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

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

0에 rI3를 적용

결국 rI3 X 2를 한 값을 rI3에 적재한다.

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

16 메모리의 0000-0099칸들을 모두 0으로 설정

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

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

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

STZ 0

ENT1 1

MOVE 0(49)

MOVE 0(50)

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

장소 0을 0으로 채운다.

rI1에 1을 적재한다.

장소 0을 rI1이 가리키는 1로 복사. 49개 워드

CONTENTS(0) -> CONTENTS(1) CONTENTS(1) -> CONTENTS(2) … CONTENTS(48) -> CONTENTS(49)

끝나고 난 뒤 rI1도 변경. rI1 = 1 + 49

1 byte로 99를 표현 못해서 나눔 - MIX에선 6bit라네~

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

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

STZ 0

STZ 1

STZ 99

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

18 다음의 “넘버 원” 프로그램을 수행했을 때

레지스터들과 토글, 지시자, 메모리에 생기는 변화를 예측

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

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

이게 넘버 원 프로그램 갈 길이 멀어 보인다. 고고~

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

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

1 + 0 0 0 0 0

rX - 0 0 0 0 1

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

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

1 - 1 0 0 0 0

rX - 0 0 0 0 1

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

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

1 - 1 0 0 0 0

rA ? ? ? ? ? 0

rX - 0 0 0 1 0

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

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

1 - 1 0 0 0 0

rA - 0 0 0 0 1

rX - 0 0 0 1 0

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

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

1 - 1 0 0 0 0

rA - 0 0 0 0 1

rX - 0 0 0 0 63

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

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

1 - 1 0 0 0 0

rA - 0 0 0 0 1

rX - 0 0 0 0 63

rI1 + 0 0 0 0 1

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

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

1 - 1 0 0 0 0

rA - 63 0 0 0 0

rX - 1 0 0 0 0

rI1 + 0 0 0 0 1

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

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

1 - 1 0 0 0 0

rA - 0 0 0 0 0

rX - 1 0 0 0 0

rI1 + 0 0 0 0 1

위넘침 토글 O

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

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

1 + 0 0 0 0 0

rA - 0 0 0 0 0

rX - 1 0 0 0 0

rI1 + 0 0 0 0 2

위넘침 토글 O

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

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

1 + 0 0 0 0 0

rA - 0 0 0 0 0

rX - 1 0 0 0 0

rI1 + 0 0 0 0 2

비교 지시자 E L G

위넘침 토글 O

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

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

1 + 0 0 0 0 0

2 + 0 0 0 0 0

rA - 0 0 0 0 0

rX - 1 0 0 0 0

rI1 + 0 0 0 0 3

비교 지시자 E L G

위넘침 토글 O

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

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

1 + 0 0 0 0 0

2 + 0 0 0 0 0

rA - 10000

rX - 1 0 0 0 0

rI1 + 0 0 0 0 3

비교 지시자 E L G

위넘침 토글 O

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

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

1 + 0 0 0 0 0

2 + 0 0 0 0 0

rA - 30 30 30 30 30

rX - 31 30 30 30 30

rI1 + 0 0 0 0 3

비교 지시자 E L G

위넘침 토글 O

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

22 장소 2000에 어떤 정수 X. 𝑋13을 계산하고 그 결과를 레지스터 A에 남겨둔 채로 종료하는 프로그램을 두 개 작성 (a) 사용하는 MIX 메모리 장소들의 수가 최소 (b)수행 시간이 가능한 한 최소 𝑋13값은 하나의 워드를 넘지 않는다고 가정한다.

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

(a) 사용하는 MIX 메모리 장소들의 수가 최소

3000 ENT4 12

LDA 2000

3002 MUL 2000

SLAX 5

DEC4 1

J4P 3002

HLT 0

공간 : 7 시간 : 171u

rI4에 12를 저장

rA에 X를 저장

rA와 X를 곱한 값을 rA,rX에 적재

rX에 저장된 값을 rA로 옮김

rI4를 1 감소

rI4가 0보다 크면 3002로 점프

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

(b) 수행 시간이 가능한 한 최소

입력은 무조건 정수. 𝑋13을 구하면 된다. 𝑋 범위만 알 수 있다면 메모이제이션을 사용 - 미리 계산해 저장해 놓고 사용

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

𝑋13 < 𝑏5

𝑙𝑜𝑔2 𝑋13 < 𝑙𝑜𝑔2𝑏

5 13𝑙𝑜𝑔2 𝑋 < 5𝑙𝑜𝑔2𝑏 13𝑙𝑜𝑔2 𝑋 < 5𝑙𝑜𝑔22

6, ∵ 𝑏 < 26

𝑙𝑜𝑔2 𝑋 < 3013 = 2.307…

𝑙𝑜𝑔25 = 2.321… 𝑙𝑜𝑔26 = 2.584… ∴ 𝑿 ≤ 𝟒

주의! 책이랑 다름. 책에선 5보다 작거나 같다고 설명한다.

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

3000 LD1 2000

LDA 3500,1

HLT 0

3496 (−4)13

3497 (−3)13

3498 (−2)13

3499 (−1)13

3500 013

3501 113

3502 213

3503 313

3504 413

장소 2000에 있는 정수를 rI1에 적재

3500에 rI1값을 더한 주소값을 rA에 적재

3500에 0이 있다. 2000에 -1이 저장되어 있다면 3500 – 1, 즉 3499에 저장된 값이 rA에 적재

공간 : 12 시간 : 4u - LD1 : 2u - LDA : 2u

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

24

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

(a) 최소의 메모리 공간

(b)최소의 수행 시간

rA + 0 a b c d

rX + e f g h i

rA + a b c d e

rX + 0 f g h i

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

(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

나머지

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

(b) 최소의 수행 시간

rA + 0 a b c d

rX + e f g h i

rA + f g h i 0

rX + a b c d e

rA + 0 f g h i

rX + a b c d e

rA + a b c d e

rX + 0 f g h i

SRC 4

SRA 1

SLC 5

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