2016-10-26 4 views
0

내 컴퓨터 아키텍처 클래스에서이 연습 시험 문제로 작업합니다. 나는이 질문에 어떻게 대답해야하는지 혼란 스럽다.2 명령어로 명령어 세트 설계

원래 질문 :

은 2 개의 N 비트 명령어의 명령어 세트와 가상 컴퓨터를 생각해 보자. 첫 번째 비트는 연산 코드를 지정하고 나머지 $ n-1 $ 비트는 주 메모리의 $ 2^(n-1) $ $ n $ 비트 워드 중 하나를 지정합니다. 두 가지 지침이 있습니다.

  • SUBS X : 축약 기 레지스터에서 메모리 위치 X의 내용을 빼고 결과를 위치 X와 축약기에 저장하십시오.
  • 점프 X : 무조건 위치로 이동 X

명령 또는의 보수 표기법 진수 중 하나를 포함 할 수 있습니다 메인 메모리에 단어. X

  • 추가, 위치에 축적를 어큐뮬레이터 위치 X :

    1. 데이터 전송 :이 명령 세트 만이 작업을 사용하여 다음 작업을 프로그래밍 할 수있는 방법을 보여줌으로써 합리적으로 완전 함을 입증 위치의 내용을 추가 X는 어큐뮬레이터
    2. 조건 분기
    3. 논리
    4. 또는
  • 답변

    0

    이것은 당신이 거기있는 매우 흥미로운 과제이다; 내가 학교에있을 때 나는 그런 도움을 원한다.

    이 질문에 대답하려면 기본적으로이 지침을 사용하여 주어진 작업을 구현하는 방법을 보여줄 필요가 있습니다. 나는 여기서 당신이 어려움을 겪고 있다고 가정하고 있습니다. 이것이 학교 임무이기 때문에, 나는 이것을 정확히 어떻게 해결할 것인가에 대해 구체적으로 설명하지 않을 것입니다. 대신 나는 당신을 바른 길로 인도해야 할 몇 가지 지침을 줄 것입니다.

    첫 번째 질문부터 시작 - 데이터 전송. 첫째, 당신은 몇 가지 간단한 빌딩 블록을 필요로하는 것 (모두를 사용하는이 CPU를 처리하는 방법에 대한 마음의 오른쪽 프레임에 자신을 얻을 수) :

    • 그림을 주어진 메모리 위치
    • 에 공을 넣어하는 방법 "매장 누적 다음이 당신이 다음"어큐뮬레이터로드 위치 "를 구축 할 수 있습니다 사용하여 주어진 메모리 위치

    에 값의 부호를 변경하는 방법 누적으로

  • 그림 공을 넣어하는 방법
  • 그림 밖으로 위치에 ". 도중에 일부 스크래치 패드 메모리 위치를 사용해야 할 것임에 유의하십시오.

    이러한 작업이 완료되면 건물 추가가 매우 쉬워야합니다. 또한 "누적 기 즉시 누적 기 (accumulate to accumulator)"작업을 무료로 받으십시오. 아마도 필요할 것입니다.

    조건부 분기는 어려운 문제입니다. 분명히 자체 수정 코드가 필요합니다 (예 : 메모리 위치에서 숫자 연산을 수행 한 다음 동일한 메모리 위치에서 명령을 실행). 과제는 테스트해야하는 조건을 지정하지 않으므로 하나를 생각해야합니다."accumulator가 0이면이 위치로 가면이 위치로 가라."라는 라인을 따라 뭔가를하는 것은 꽤 쉽습니다. 그리고 이것을 자기 수정 코드에 익숙해지기 위해 정신 운동으로 해결할 것을 제안합니다. 비트 연산이나 오른쪽 시프트가 있다면 유용 할 것입니다. 아아, 우리는하지 않습니다. 우리가 지금까지 가지고있는 연산은 덧셈과 뺄셈 뿐이고, 왼쪽 쉬프트는 이것들로부터 만들어 질 수 있습니다. 더 유용한 조건은 "누적 기가 0 인 경우 0x80000000이이 위치로가는 경우이 위치로 이동"입니다.

    값의 하위 비트가 모두 0이면이 조건으로 분기하고 왼쪽 시프트를 사용하여 값의 비트를 테스트 할 수 있습니다. 이것은 일부 비트 연산을 구현할 수 있음을 의미합니다. 추가 포인트와 여분의 재미를 들어

    :

    아마 가장 일반적인 조건 분기 작업이는 "점프 누적는 0보다 작은 경우"- 하나는 매우 유용하고 조건 분기의 모든 다른 유형이 기반으로 구축 될 수있다. 이걸 만들 수 있어요?

    간접 어드레싱 작업 (위치가 메모리 위치 X에있는 메모리 위치에서로드/저장 누적기를 수행 할 수 있습니까?

    간접 분기를 만들 수 있습니까 (메모리 위치 x가 메모리 위치 x 인 메모리 위치 i에서 명령어로 점프)?

  • 관련 문제