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

1,461 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,461
On SlideShare
0
From Embeds
0
Number of Embeds
457
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

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

×