다음 중 어셈블리어와 관계없는 것은?
(1)연상 부호, (2)컴파일러, (3)매크로, (4)레이블
답: 컴파일러.
연상 부호와 매크로, 레이블, 의사 명령어를 사용하여 어셈블리어라는 컴퓨터 언어를 만들었다.
컴파일러는 고급어를 기계어로 변환할 때 사용하는 도구이다.
다음 중 피연산자의 수를 줄이는 방법과 거리가 먼 것은?
(1)스택, (2)누산기, (3)목적지 피연산자의 위치를 근원지 피연산자와 중첩, (4)레지스터
답: 레지스터
책을 보니 "레지스터"가 아닌 "메모리 주소 대신 레지스터 주소로 피연산자 명시"라고 적혀 있다.
아마도 레지스터랑 레지스터 주소는 다른 건가보다.
피연산자 수를 줄이는 또다른 방법은 누산기와 같은 묵시적 피연산자를 사용하는 것이다. 데이터가 항상 동일한 위치에 있다면 위치를 명시할 필요가 없으므로 피연산자 수를 줄일 수 있다.
다음 분기 명령어 중 가장 많은 작업을 수행하는 연산은?
답:
CPU 내부에 기억장치를 추가할 때 나타나는 효과와 관계없는 것은?
답:
명령어의 길이가 2바이트라고 가정할 때 프로시저 호출 명령 'cal proc'의 의미는?
프로시저를 호출하기 위해 다음과 같은 명령어를 사용한다. proc는 프로시저의 이름으로, 어셈블리 과정을 거쳐 기계어로 바뀌면 proc는 프로시저가 위치한 주소로 변환된다.
proc 프로시저의 실행이 종료되면 'cal proc' 다음 명령어로 돌아와야 하기 때문에 복귀 주소를 저장한다.
두 번째로는 proc라는 프로시저로 분기한다.
-> 인출 사이클: IR←M[PC]; PC←PC+△(명령어의 길이)
-> 실행 사이클: TOS←PC; PC←proc
TOS는 스택의 최상위 부분을 의미한다. 실행 사이클의 첫 번째 작업은 다음에 실행할 명령어 주소 값인 PC, 즉 복귀 주소를 스택에 넣는 것이다. 복귀 주소를 저장한 후 PC에 proc의 주소를 저장하기 때문에 이후부터는 호출된 프로시저 proc에 있는 명령어를 인출하게 된다.
답: IR←M[P]; PC←PC+2;TOS←PC;PC←proc
다음에 수행할 명령어의 주소를 가리키는 레지스터의 이름은 무엇인가?
답:
[시험 나온대] 5절의 메모리-메모리 컴퓨터와 가정이 동일할 때, y = ax^2 + b를 연산하는 데 발생하는 총 메모리 트래픽은 얼마인가?
가정이 동일하다면 피연산자는 2바이트, 연산부호는 1바이트이고, 데이터는 4바이트임.
두 가지 부분으로 나눠서 계산한 후 합치면 답이 나옴.
1- 명령어 인출은 연산부호와 피연산자의 개수로 트래픽을 계산할 수 있음. 명령어당 연산부호 한 개, 피연산자 2개이므로 5바이트임. 그게 4번 있음. 그래서 20 트래픽.
2- 데이터 전송은 mov는 2번의 데이터 전송이 있어서 8바이트, mul과 add는 3번의 데이터 전송이 있어서 12바이트, 총 8+12*2+12 = 44임.
1과 2를 더해서 답을 구하면 됨.
답: 64 트래픽
프로시저를 호출할 때 복귀 주소를 저장해야 한다. 복귀 주소를 위한 저장 공간으로 특정 레지스터를 이용할 때 발생하는 문제는 무엇인가?
답:
프로그램과 컴퓨터 하드웨어 사이의 인터페이스에 대한 완전한 정의 혹은 명세를 무엇이라고 하는가?
답:
정수를 표현하기 위한 부호-크기 방식은 0이 2개 존재한다. 이는 좋은 명령어 집합 구조를 위한 ( )에 위반된다.
답:
[시험에 나올 듯] [표 3-3]에서 104번지와 106번지의 기계어를 각각 4500, 2500으로 바꿀 때 대응하는 어셈블리어는 무엇인가? 가상 컴퓨터로 수정한 프로그램을 실행하면 메모리와 레지스터의 최종 내용은 무엇인가?
답:
명령어 인출 사이클에서 발생하는 작업을 기호를 사용하여 순서대로 나타내되 MAR과 MBR에 대한 경유 과정도 포함하라. 단, 명령어의 길이는 4바이트이다.
답: