greenkang
그린 개발log
greenkang
전체 방문자
오늘
어제
  • 분류 전체보기 (28)
    • 알고리즘 (20)
    • MySQL (0)
    • 생각 (0)
    • 컴퓨터구조 (6)
    • Spring · SpringBoot (1)
    • Java (1)
    • 장애 대응 회고 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 알고리즘
  • 백준7569 java
  • 백준7569
  • 자바
  • 파이썬
  • 어셈블리어
  • 컴퓨터구조
  • TOPCODER알고리즘트레이닝
  • 백준 17265번
  • 백준
  • 백준 24479번 자바
  • java
  • 프로그래머스 거리두기 java
  • 리트코드
  • 프로그래머스 거리두기 자바
  • 41. First Missing Positive
  • 백준 1065번 자바
  • 프로그래머스
  • 장애 대응 회고
  • python

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
greenkang
컴퓨터구조

[컴퓨터 구조] 명령어의 구조

컴퓨터구조

[컴퓨터 구조] 명령어의 구조

2023. 6. 6. 15:47

*혼자공부하는컴퓨터구조+운영체제(강민철 / 한빛미디어) 책과 강의를 듣고 작성한 내용입니다 :)


명령어 한 줄은 연산 코드와 오퍼랜드로 이루어져 있습니다.

 

📗 연산 코드와 오퍼랜드

✔ 연산 코드 : 명령어가 수행할 연산

가장 기본적인 연산 코드 유형은 크게 4가지 입니다.

 

1️⃣ 데이터 전송

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

2️⃣ 산술/논리 연산

  • ADD / SUBTRACT / MULTIPLY / DIVIDE : 덧셈 / 뺄셈 / 곱셈 / 나눗셈을 수행하라
  • INCREMENT / DECREMET : 오퍼랜드에 1을 더하라 / 1을 빼라
  • AND / OR / NOT / : AND / OR / NOT 연산을 수행하라
  • COMPARE : 두 개의 숫자 또는 TRUE / FALSE 값을 비교하라 

3️⃣ 제어 흐름 변경 

* 함수를 떠올리면 이해하기 쉽습니다

  • JUMP : 특정 주소로 실행 순서를 옮겨라
  • CONDITIONAL JUMP : 조건에 부합할 때 특정 주소로 실행 순서를 옮겨라
  • HALT : 프로그램의 실행을 멈춰라
  • CALL : 되돌아올 주소를 저장한 채 특정 주소로 실행 순서를 옮겨라
  • RETURN : CALL을 호출할 때 저장했던 주소로 돌아가라

4️⃣ 입출력 제어

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

 

✔ 오퍼랜드 : 연산에 사용될 데이터 또는 데이터가 저장되어 있는 위치

  • 사용할 데이터를 직접적으로 명시하기 보다는 데이터가 저장되어 있는 위치를 명시하는 경우가 많음
  • 그래서 오퍼랜드 필드를 주소 필드라고 말하기도 함
  • 오퍼랜드는 명령어 안에 하나도 없을 수도, 1개가 있을 수도, 2개 또는 여러개가 있을 수도 있음

📗  주소 지정 방식 addressing modes

✔ 유효 주소 effective address : 연산의 대상이 되는 데이터가 저장된 위치

✔ 주소 지정 방식 addressing mode : 오퍼랜드 필드에 데이터가 저장된 위치를 명시할 때, 연산에 사용할 데이터의 위치를 찾는 방법! 즉, 유효 주소를 찾는 방법 

 

 

💡오퍼랜드 필드에 데이터를 직접적으로 명시하기 보다 데이터가 저장되어 있는 위치를 명시하는 경우가 많은 이유는 뭘까요?

명령어의 길이 때문입니다!

 

하나의 명령어는 n비트로 구성되어 있고, 그 중 연산 코드 필드가 m비트라고 가정한다면 오퍼랜드 필드는 n - m비트가 됩니다.

만약 오퍼랜드가 여러가지가 존재한다면 한 개의 오퍼랜드 필드로 표혈할 수 있는 비트수는 n-m / 오퍼랜드 개수 가 되고, 

2의 (n-m / 오퍼랜드 개수) 승 만큼 정보를 표현 할 수 있는 가짓수가 줄어들게 됩니다.

 

하지만 오퍼랜드 필드 안에 메모리 주소가 담긴다면 표현 할 수 있는 데이터의 크기는 하나의 메모리 주소에 저장할 수 있는 공간만큼 커집니다.

 


📗  다양한 주소 지정 방식

✔ 즉시 주소 지정 방식 immediate addressing mode :  연산에 사용할 데이터를 오퍼랜드 필드에 직접명시하는 방식

장점

  • 연산에 사용할 데이터를 메모리나 레지스터로부터 찾는 과정이 없기 때문에 빠름

단점

  • 표현할 수 있는 데이터의 크기에 제한이 생김

 

✔ 직접 주소 지정 방식 direct addressing mode : 유효 주소를 오퍼랜드 필드에 직접 명시하는 방식

장점

  • 밑에서 살펴 볼 간접 주소 지정 방식보다 속도가 빠름

단점

  • 표현할 수 있는 유효 주소에 제한이 생김

 

✔ 간접 주소 지정 방식  indirect addressing mode : 유효 주소의 주소를 오퍼랜드 필드에 직접 명시하는 방식

장점

  • 즉시 주소 지정 방식, 직접 주소 지정 방식보다 표현할 수 있는 유효 주소의 범위가 더 넒음

단점

  • 두 번의 메모리 접근이 필요하기 때문에 느림

 

✔ 레지스터 주소 지정 방식 register addressing mode : 연산에 사용할 데이터를 저장한 레지스터를 오퍼랜드 필드에 직접 명시하는 방식

장점

  •  CPU외부에 있는 메모리에 접근하는 것보다 내부에 있는 레지스터에 접근하는 것이 더 빠름

단점

  • 표현할 수 있는 레지스터 크기에 제한이 생김

 

✔레지스터 간접 주소 지정 방식 register indirect addressing mode : 연산에 사용할 데이터를 메모리에 저장하고, 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시하는 방식

장점

  • 메모리에 접근하는 횟수가 한 번으로 줄어들어 간접 주소 지정 방식보다 빠름

단점

  • 그래도 직접 데이터를 명시하는 즉시 주소 지정 방식 보다는 느림

'컴퓨터구조' 카테고리의 다른 글

[컴퓨터 구조] 어셈블리어 2. 예제  (0) 2023.05.01
[컴퓨터 구조] 어셈블리어 1. 기본 문법과 명령어  (0) 2023.05.01
[컴퓨터 구조] 컴퓨터가 고급언어를 이해하는 방법  (1) 2023.04.16
[컴퓨터 구조] 컴퓨터가 데이터를 이해하는 방법 2. 문자  (0) 2023.04.05
[컴퓨터 구조] 컴퓨터가 데이터를 이해하는 방법 1. 숫자  (0) 2023.04.05
  • 📗 연산 코드와 오퍼랜드
  • 📗  주소 지정 방식 addressing modes
  • 📗  다양한 주소 지정 방식
'컴퓨터구조' 카테고리의 다른 글
  • [컴퓨터 구조] 어셈블리어 2. 예제
  • [컴퓨터 구조] 어셈블리어 1. 기본 문법과 명령어
  • [컴퓨터 구조] 컴퓨터가 고급언어를 이해하는 방법
  • [컴퓨터 구조] 컴퓨터가 데이터를 이해하는 방법 2. 문자
greenkang
greenkang

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.