[2023. 중등임용 정보컴퓨터A] 레지스터와 스택 기반 명령러

레지스터와 스택 기반 명령러

정답

① R4 = 945, ② 서로 바꾸어도 되는 명령어: ①과 ③, ③ ㉠ ADD, ㉡ MUL, ㉢ MUL이다.

출제 의도

이 문제는 레지스터 기반 명령어와 스택 기반 명령어의 실행 원리를 비교하여 이해하고, 연산의 의존 관계에 따라 명령어의 실행 순서 변경 가능성을 판단하며, 두 방식이 동일한 계산 결과를 산출하도록 대응시키는 능력을 평가한다.

풀이 과정

먼저 (가)의 레지스터 기반 명령어를 순서대로 실행한다.

① ADD R1, 5, 10 → \(R1 = 5 + 10 = 15\)

② MUL R2, R1, 7 → \(R2 = 15 \times 7 = 105\)

③ ADD R3, 3, 6 → \(R3 = 3 + 6 = 9\)

④ MUL R4, R2, R3 → \(R4 = 105 \times 9 = 945\)

따라서 (가)의 코드 실행 후 R4에 저장된 값은 945이다.

다음으로 명령어 간의 의존 관계를 살펴본다. ①은 R1을, ③은 R3을 생성하며 서로의 결과를 사용하지 않으므로 실행 순서를 바꾸어도 최종 결과에는 영향이 없다. 반면 ②는 ①의 결과를, ④는 ②와 ③의 결과를 사용하므로 위치를 바꿀 수 없다. 따라서 순서를 바꾸어도 실행 결과가 변하지 않는 명령어는 ①과 ③이다.

이제 (나)의 스택 기반 명령어에서 빈칸을 채운다. 주어진 명령어 실행 흐름을 정리하면 다음과 같다.

PUSH 7, PUSH 5, PUSH 10, ADD → 스택에 \(7, 15\)가 저장된다.

이후 3과 6의 합을 만든 뒤, 15와 9를 곱하고, 마지막으로 7을 곱해야 (가)와 동일한 결과를 얻을 수 있다.

따라서 필요한 명령어 순서는

㉠ ADD → \(3 + 6 = 9\)

㉡ MUL → \(15 \times 9 = 135\)

㉢ MUL → \(7 \times 135 = 945\)

마지막으로 POP R4를 수행하면 R4에 945가 저장되어 (가)와 (나)의 실행 결과가 동일해진다.