ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 명령어의 구조
    얇게 공부한 CS 2024. 2. 24. 16:52

    컴퓨터 과학에서 명령어의 구조기본적이고 필수적인 지식인 거 같습니다.

    이번에 공부를 통해 간단하게 이 구조에 대하여 알아보려 합니다.

    | 명령어의 기본 구조

    명령어는 크게 연산 코드(op-code)오퍼랜드(operand) 두 부분으로 나뉩니다.

     

    연산 코드는 덧셈, 뺄셈과 같은 산술 연산이나 데이터 전송 같은 데이터로 수행할 동작을 의미하고,

    오퍼랜드는 이러한 연산의 대상이 되는 데이터를 말합니다. 이런 오퍼랜드는 피연산자라고 할 수도 있고,

    이는 데이터가 직접 명시되기도 하고, 레지스터 이름, 메모리 주소 같은 대상의 위치가 명시되기도 합니다.

     

    또한 같은 코드를 실행하는 명령어의 개수는 오퍼랜드의 개수에 따라서 달라질 수 있습니다.

    | 연산 코드의 종류

    연산 코드는 크게 데이터 전송, 산술 / 논리 연산, 제어 흐름 변경, 입출력 제어 등으로 구분할 수 있습니다.

    종류는 cpu마다 다르지만 대표적으로 사용되는 연산 코드는 다음과 같습니다.

    데이터 전송

    - MOVE: 데이터를 옮기기
    - STORE: 데이터 저장하기
    - LOAD(FETCH): 메모리에서 가져오기
    - PUSH: 스택 최상단에 데이터 저장하기
    - POP: 스택 최상단의 데이터를 가져오기

    산술 / 논리 연산

    - AND/SUBTRACT/MULTIPLY/DIVIDE: 덧셈/뺄셈/곱셈/나눗셈 하기
    - INCREMENT/DECREMENT: 1증가/감소 시키기
    - AND/OR/NOT: AND/OR/NOT 연산을 수행하기
    - COMPARE: 두 숫자 또는 TRUE/FALSE값 비교하기

    제어 흐름 변경

    - JUMP: 특정 주소로 실행 순서 옮기기
    - CONDITIONALJUMP: 조건에 부합할 경우 특정 주소로 실행 순서 옮기기
    - HALT: 프로그램 실행 멈추기
    - CALL: 되돌아올 주소를 저장한 채 특정 주소로 실행 순서 옮기기
    - RETURN: CALL 호출 시 지정했던 주소로 돌아가기 (함수 호출 반환 시 사용)

    입출력 제어

    - READ(INPUT): 특정 입출력 장치로부터 데이터 읽기
    - WRITE(OUTPUT): 특정 입출력 장치로 데이터 쓰기
    - START IO: 입출력 장치 시작하기
    - TEST IO: 입출력 장치 상태 확인

    | 주소 지정 방식

    오퍼랜드의 위치(주소)를 지정하는 방식은 다양합니다. 이는 명령어의 길이가 한정되어 있기 때문에
    효율적으로 데이터의 위치를 찾기 위한 방법입니다.

     

    주소 지정은 유효 주소를 찾는 방법이고, cpu마다 차이가 있습니다.

    -> 유효주소: 연산 코드에 사용할 데이터가 저장된 위치

    즉시 주소지정

    - 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시

    - 가장 빠른 주소지정, 데이터 크기에 제한

    직접 주소 지정

    - 오퍼랜드 필드에 유효 주소(연산에 사용될 데이터가 저장된 메모리  주소) 명시

    - 오퍼랜드 필드로 표현 가능한 메모리 주소 크기에 제한

    간접 주소 지정

    - 오퍼랜드 필드에 유효 주소의 주소 명시

    - 유효 주소 크기에 제한은 없으나, 속도가 비교적 느림

    레지스터 주소 지정

    - 연산에 사용할 데이터를 저장한 레지스터를 오퍼랜드 필드에 직접 명시

    레지스터 간접 주소 지정

    - 연산에 사용할 데이터를 메모리에 저장하고, 그 주소(유효 주소)를 저장한 레지스터를 오퍼랜드 필드에 명시

    - 메모리 접근은 한번

    '얇게 공부한 CS' 카테고리의 다른 글

    HTTP(HyperText Transfer Protocol) 이해하기  (0) 2024.02.26
    REST API  (0) 2024.02.25
    쿠키(Cookie)와 세션(Session)  (0) 2024.02.23
    웹 브라우저의 동작  (0) 2024.02.21
    [네트워크] OSI 7 계층  (0) 2024.02.02
Designed by Tistory.