16
TAOCP #1 아꿈사 http://cafe.naver.com/architect1 최성기 1.3.2. MIX 어셈블리 언어 (연습문제 풀이)

[아꿈사발표자료] TAOCP 1.3.2 MIX 어셈블리 언어 연습문제 (110312)

Embed Size (px)

Citation preview

Page 1: [아꿈사발표자료] TAOCP 1.3.2 MIX 어셈블리 언어 연습문제 (110312)

TAOCP #1

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

최성기

1.3.2. MIX 어셈블리 언어 (연습문제 풀이)

Page 2: [아꿈사발표자료] TAOCP 1.3.2 MIX 어셈블리 언어 연습문제 (110312)

1.3.2. MIX 어셈블리 언어

연습문제 (1부)

2. [10] 3. [23] 4. [25] 8. [24]

연습문제 (2부)

9. [25] 10. [31] 14. [31] 20. [33]

Page 3: [아꿈사발표자료] TAOCP 1.3.2 MIX 어셈블리 언어 연습문제 (110312)

1.3.2. MIX 어셈블리 언어

연습문제 (1부)

2. [10] 3. [23] 4. [25] 8. [24]

연습문제 (2부)

9. [25] 10. [31] 14. [31] 20. [33]

Page 4: [아꿈사발표자료] TAOCP 1.3.2 MIX 어셈블리 언어 연습문제 (110312)

2. [10] 프로그램 M의 줄 12는 “JMP *”인데, 여기서 *는 그 줄의 장소를 뜻한다. 이 자체로 보면 자신으로 점프하는 명령이므로 무한루프가 될 것 같지만, 프로그램 M은 무한루프에 빠지지 않는다. 왜 그럴까?

Page 5: [아꿈사발표자료] TAOCP 1.3.2 MIX 어셈블리 언어 연습문제 (110312)

2. [10] 프로그램 M의 줄 12는 “JMP *”인데, 여기서 *는 그 줄의 장소를 뜻한다. 이 자체로 보면 자신으로 점프하는 명령이므로 무한루프가 될 것 같지만, 프로그램 M은 무한루프에 빠지지 않는다. 왜 그럴까?

여기서 주소가 재설정됨

03줄이 실행되는 순간 이 값이 수정된다.

Page 6: [아꿈사발표자료] TAOCP 1.3.2 MIX 어셈블리 언어 연습문제 (110312)

3. [23] 프로그램 M과 함께 쓰인다고 할 때, 다음 프로그램의 효과는 무엇인가?

프로그램 M 다음 프로그램(?)

(0) (0)

Page 7: [아꿈사발표자료] TAOCP 1.3.2 MIX 어셈블리 언어 연습문제 (110312)

3. [23] 프로그램 M과 함께 쓰인다고 할 때, 다음 프로그램의 효과는 무엇인가?

(0)

(0)

0번 디바이스에서 1001번지로 데이터 읽어 들임

0번 장치가 사용 중이면 제자리로 점프(=대기)

rI1 레지스터에 숫자 100(데이터 사이즈) 입력

MAXIMUM 서브루틴으로 점프.

1000+rI1번지의 값(마지막 데이터)을 rX에 로딩

rA의 값(최대값)을 1000+rI1번지(마지막)에 저장

rX의 값을 1000+rI2번지(최대값 있던 곳)에 저장

최대값을 제일 끝으로

이동.

rI1 레지의 값을 하나 줄인다. (데이터 사이즈 축소)

rI1 레지의 값이 양수라면 1H로 이동.

1번 디바이스로 1001번지부터의 값을 출력

스토옵 ~

selection sort. 𝑂(𝑛2)

Page 8: [아꿈사발표자료] TAOCP 1.3.2 MIX 어셈블리 언어 연습문제 (110312)

4. [25] 프로그램 P를 손으로 직접 어셈블해 볼 것. (생각보다는 오래 걸리지 않을 것이다.) 기호적 프로그램에 해당하는 실제의 수치적 메모리 내용은 무엇인가?

…교수님, 생각보다 오래 걸리던데요;;

Page 9: [아꿈사발표자료] TAOCP 1.3.2 MIX 어셈블리 언어 연습문제 (110312)

4. [25] 프로그램 P를 손으로 직접 어셈블해 볼 것.

LDA 2000,2(0:3) OP(C) Addr ,I (F)

+ 2000 2 3 8

Addr I F C

기본 적으로 이런 절차가 50여 회 반복됩니다. 물론 그 외 다양한 추가 규칙이 등장하며 로케이션(Location)도 신경 써야겠죠.

MIXAL :

Assembly :

Page 10: [아꿈사발표자료] TAOCP 1.3.2 MIX 어셈블리 언어 연습문제 (110312)

4. 정답.

Page 11: [아꿈사발표자료] TAOCP 1.3.2 MIX 어셈블리 언어 연습문제 (110312)

8. [24] 다음 프로그램이 하는 일은 무엇인가? (컴퓨터로 실행하지 말고 직접 손으로 풀어볼 것!)

rI2 : 출력 버퍼를 채울 때마다 증가. (= 출력 데이터의 크기)

rI1 : loop A를 돌 때마다 증가.

rI1 <- 1 rI2 <- 0 rX <- ‘AAAAA’

A

B

Zero(0)출력

‘AAAAA’출력

rI3 : rI1로 초기화 후 (2H), 이 값만큼 loop B를 반복한다. C D

초 기 화

메 인 처 리

출 력

Page 12: [아꿈사발표자료] TAOCP 1.3.2 MIX 어셈블리 언어 연습문제 (110312)

메모리 아름답지 못한 출력.

Page 13: [아꿈사발표자료] TAOCP 1.3.2 MIX 어셈블리 언어 연습문제 (110312)

9. [25] 장소 INST에는 하나의 MIX 명령에 해당하는 하나의 MIX 워드가 들어있다. 그 워드가 유효한 C, ±AA, I, F 필드를 가진다면 장소 GOOD으로, 아니면 BAD로 점프하는 프로그램을 작성하라.

-> 메모리 블록의 데이터에 대해, 올바른 MIX 명령인지 판별하라는 소리.

Page 14: [아꿈사발표자료] TAOCP 1.3.2 MIX 어셈블리 언어 연습문제 (110312)

± A A I F C I 필드 : 값이 6 이하이면 유효

C 필드 : 존재하는 값이면 (표 1.3.1-1) 유효

F 필드 : C필드에 따라 다르게 판단. ex) C=7(MOVE)이면 F는 어떤 값이든 가능. C=8(LDA)이면 F는 8L+R 형태여야 한다. ( 0 ≤ 𝐿 ≤ 𝑅 ≤ 5 )

±AA필드 : C가 메모리 주소를 요구하는 명령이고 I=0일 때에는 올바른 메모리 주소 (0~3999) 여야 한다.

Page 15: [아꿈사발표자료] TAOCP 1.3.2 MIX 어셈블리 언어 연습문제 (110312)
Page 16: [아꿈사발표자료] TAOCP 1.3.2 MIX 어셈블리 언어 연습문제 (110312)

끝. 질문은 님께~