차곡차곡 성 쌓기
article thumbnail

본 카테고리는 "혼자 공부하는 컴퓨터구조 + 운영체제 (강민철 저)" 책과 강의를 기반으로 작성하였습니다.


 

명령의 구조와 주소 지정 방식

명령어는 컴퓨터를 움직이게 하는 정보이다. 우리가 짠 코드가 최종적으로 컴파일되어 컴퓨터가 이해하는 기계어로 변환된 것이다. 이때 명령어는 당연하게도 정해진 구조가 있다. 명령어의 구조에 대하 알아보고, 데이터를 어떻게 저장하는지 주소 지정 방식에 대해 알아본다.

 

 

명령어의 구조

명령 코드(operation code)와 오퍼랜드(operand)로 구성되어 있다.

  • 명령 코드 : 명령어가 수행할 연산
  • 오퍼랜드 : 연산에 사용할 데이터 또는 여산에 사용할 데이터가 저장된 위치
  • 무엇을 대상, 무엇을 수행

왼쪽(파랑) 명령 코드, 오른쪽(빨강) 오퍼랜드

 

오퍼랜드

  • 연산에 사용될 데이터 or 연산에 사용될 데이터가 저장된 위치(주소필드)
  • 오퍼랜드가 없을 수도(연산 코드만 있는 경우), 세 개일 수도 있다

 

명령 코드와 종류

  • 수행할 연산을 담는다
  • 명령 코드 종류 : 데이터 전송, 산술/ 논리 연산, 제어 흐름 변경, 입출력 제어

▶︎ 데이터 전송

  • MOVE : 데이터를 옮겨라
  • STORE : 메모리를 저장하라
  • LOAD(FETCH) :  메모리에서 CPU로 데이터를 가져와라
  • PUSH : 스택에 데이터를 저장하라
  • POP : 스택의 최상단 데이터를 가져와라

 

▶︎ 산술/논리 연산

  • ADD / SUBTRACT / MULTIPLY / DIVIDE : 덧셈/ 뺼셈/ 곱셈/ 나눗셈
  • INCREMENT / DECREMENT : 오퍼랜드에 1더하라 / 1 빼라
  • AND / OR/ NOT
  • COMPARE : 값을 비교하라

 

▶︎ 제어 흐름 변경

  • JUMP : 특정 주소로 실행 순서를 옮겨라
  • HARLT : 프로그램 실행을 멈춰라
  • CALL : 돌아올 주소를 저장한 채 특정 주소로 실행 순서를 옮겨라
  • RETURN : CALL을 호출할 때 저장했던 주소로 돌아가라

 

▶︎ 입출력 제어

  • READ : 특정 입출력 장치로부터 데이터를 읽어라
  • WRITE : 특정 입출력 장치로 데이터를 써라
  • START IO : 입출력 장치 시작
  • TEST IO : 입출력 장치 상태 확인

 

 

명령어 주소 지정 방식

연산에 사용할 데이터가 저장된 위치를 찾는 방법 , 유호 주소를 찾는 방법

 유호 주소 (effective address) : 연산에 사용할 데이터가 저장된 위치

 

▶︎ 즉시 주소 지정 방식 (immediate addressing mode)

  • 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시
  • 저장할 데이터 크기가 매우 제한적이지만 빠르다

 

 

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

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

 

 

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

  • 오퍼랜드 필드에 유효 주소의 주소를 명시
  • 앞선 지정 방식들에 비해 속도가 느림 => CPU가 메모리 접근을 많이 하기 때문

 

 

▶︎ 레지스터 주소 지정 방식 (resigster addressing mode)

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

 

728x90
profile

차곡차곡 성 쌓기

@nagrang

포스팅이 좋았다면 "좋아요" 해주세요!