공부방

명령어의 구조와 지정 방식 본문

CS정리

명령어의 구조와 지정 방식

코딩 화이팅 2024. 7. 28. 16:23

  • 연산 코드 : 수행할 연산 
  • 오퍼랜드 : 연산에 사용될 데이터 혹은 연산에 사용될 데이터가 저장된 위치

  • 붉은색 : 연산코드
  • 검정색 : 오퍼랜드

오퍼랜드

  • 연산에 사용될 데이터
  • 연산에 사용될 데이터가 저장된 위치(주소 필드)
    • 더 자주 사용됨.

연산 코드

  • 수행할 연산
  • 대표적인 연산 코드의 종류
    • 데이터 전송
      • MOVE : 데이터를 옮겨라
      • STORE : 메모리에 저장하라
      • LOAD(FETCH) : 메모리에서 CPU로 데이터를 가져와라
      • PUSH : 스택에 데이터를 저장하라
      • POP : 스택의 최상단 데이터를 가져와라
    • 산술/논리 연산
      • ADD / SUBSTRACT / MULTIPLY / DIVIDE : 덧셈 / 뺄셈 / 곱셈 / 나눗셈
      • INCREMENT / DECREMENT : 오퍼랜드에 1을 더하라 / 오퍼랜드에 1을 빼라
      • AND / OR / NOT : AND / OR / NOT 연산을 수행
      • COMPARE : 두 개의 숫자 또는 TRUE / FALSE 값을 비교
    • 제어 흐름 변경
      • JUMP : 특정 주소로 실행 순서를 옮기기
      • CONDITIONAL JUMP : 조건에 부합할 때 특정 주소로 실행 순서를 옮기기
      • HALT : 프로그램의 실행을 멈추기
      • CALL : 되돌아올 주소를 저장한 채 특정 주소로 실행 순서를 옮기기
      • RETURN : CALL을 호출할 때 저장했던 주소로 돌아가기
    • 입출력 제어
      • READ(INPUT) : 특정 입출력 장치로부터 데이터를 읽기
      • WRITE(OUTPUT) : 특정 입출력 장치로 데이터 쓰기
      • START IO : 입출력 장치를 시작
      • TEST IO : 입출력 장치의 상태를 확인

스택

  • 한쪽 끝이 막혀있는 자료구조
  • LIFO(Last In First Out) : 나중에 들어간 것이 제일 먼저 나온다.

  • 양쪽 끝이 뚫려있는 자료구조
  • FIFO(First In First Out) : 가장 먼저 들어간 것이 제일 먼저 나온다.

오퍼랜드에 굳이 데이터가 저장된 위치를 쓰는 이유?

A : 명령어 내에서 표현할 수 있는 크기가 제한적이기 때문에.

오퍼랜드의 수가 많아질수록 데이터의 크기는 더 줄어든다.

메모리 주소를 입력하면 표현할 수 있는 데이터의 크기가 훨씬 커진다.

레지스터에 입력해도 된다.

유효주소(effective address)

연산에 사용할 데이터가 저장된 위치

명령어 주소 지정 방식(addressing modes)

  • 연산에 사용할 데이터가 저장된 위치를 찾는 방법
  • 유효 주소를 찾는 방법
  • 다양한 명령어 주소 지정 방식들

즉시 주소 지정 방식(immdiate addressing mode)

  • 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시
  • 가장 간단한 형태의 주소 지정 방식
  • 연산에 사용할 데이터의 크기가 작아질 수 있지만 빠르다.

직접 주소 지정 방식(direct addressing mode)

  • 오퍼랜드 필드에 유효 주소 직접적으로 명시
  • 유효 주소를 표현할 수 있는 크기가 연산 코드만큼 줄어듦

간접 주소 지정 방식(indirect addressing mode)

  • 오퍼랜드 필드에 유효 주소의 주소를 명시
  • 앞선 주소 지정 방식들에 비해 속도가 느림

레지스터 주소 지정 방식(register addressing mode)

  • 연산에 사용할 데이터가 저장된 레지스터 명시
  • 메모리에 접근하는 속도보다 레지스터에 접근하는 것이 빠름

레지스터 간접 주소 지정 방식(register indirect addressing mode)

  • 연산에 사용할 데이터를 메모리에 저장
  • 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시

'CS정리' 카테고리의 다른 글

컴파일 과정  (0) 2024.08.04
소스코드와 명령어  (0) 2024.06.02
0과 1로 문자를 표현하는 방법  (0) 2024.05.30
0과 1로 숫자를 표현하는 방법  (0) 2024.05.25
컴퓨터 구조의 큰 그림  (0) 2024.05.12