[컴퓨터구조] 명령어

diveintoo·2024년 3월 4일
0

혼공컴운

목록 보기
3/15

📑 본 글은 <혼공컴운>을 읽고 정리한 글입니다.

1. 소스 코드와 명령어

1-1. 고급 언어와 저급 언어

  • 기계어
    • 0과 1의 명령어 비트로 이루어진 언어
  • 저급 언어
    • 컴퓨터가 직접 이해하고 실행할 수 있는 언어
    • 어셈블리어
      • 기계어를 읽기 편한 형태로 번역한 저급 언어
  • 고급 언어
    • 사람을 위한 언어
    • 저급 언어로 변환되어 실행된다.

1-2. 컴파일 언어와 인터프리터 언어

고급 언어가 저급 언어로 변환되는 방식

  • 컴파일 언어
    • 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어
    • 목적 코드 : 컴파일러를 통해 저급 언어로 변환된 코드
    • 소스 코드 컴파일 중 오류가 발생하면 소스 코드 전체가 실행되지 않음
  • 인터프리터 언어
    • 인터프리터에 의해 소스 코드가 한 줄씩 실행되는 고급 언어
    • 소스 코드 인터프리트 중 오류가 발생하면 오류 발생 전까지의 코드는 실행됨

목적 파일링킹실행 파일

2. 명령어의 구조

2-1. 연산 코드와 오퍼랜드

명령어는 연산 코드와 오퍼랜드로 구성되어 있다.

  • 연산 코드 : 명령어가 수행할 연산
    • 연산 코드 유형 4가지
    • 데이터 전송
    • 산술/논리 연산
    • 제어 흐름 변경
    • 입출력 제어
  • 오퍼랜드(operand) : 연산에 사용할 데이터 / 데이터가 저장된 위치
    • 오퍼랜드 필드에는 주로 메모리 주소나 레지스터 이름이 담긴다.
    • 그래서 주소 필드라고 부르기도 한다.
    • 오퍼랜드 개수에 따라 0-주소 명령어, 1-주소 명령어, 2-주소 명령어, 3-주소 명령어라고 한다.

2-2. 주소 지정 방식

오퍼랜드 필드에 데이터가 아닌 메모리나 레지스터의 주소를 저장하는 이유

  • 명령어의 길이가 한정적이기 때문
  • 메모리 주소나 레지스터의 주소를 저장하면 데이터의 크기는 하나의 주소에 저장할 수 있는 공간만큼 커짐
  • 유효 주소 : 연산의 대상이 되는 데이터가 저장된 위치

주소 지정 방식 : 연산에 사용할 데이터 위치를 찾는 방법

  • 즉시 주소 지정 방식
    • 데이터를 오퍼랜드 필드에 직접 명시
    • 오퍼랜드 필드 → 데이터
    • 데이터 크기가 작아진다. / 다른 방식들보다 빠르다.
  • 직접 주소 지정 방식
    • 오퍼랜드 필드에 유효 주소를 직접적으로 명시하는 방식
    • 오퍼랜드 필드 → 유효 주소 → 메모리 내 데이터
    • 유효 주소를 표현할 수 있는 범위가 연산 코드의 길이만큼 줄어든다.
  • 간접 주소 지정 방식
    • 오퍼랜드 필드에 유효 주소의 주소를 명시
    • 오퍼랜드 필드 → 유효 주소의 주소 → 메모리 내 유효 주소 → 메모리 내 데이터
    • 유효 주소의 범위가 넓어진다. / 두 번의 메모리 접근 필요 → 느리다.
  • 레지스터 주소 지정 방식
    • 오퍼랜드 필드에 레지스터를 직접 명시
    • 오퍼랜드 필드 → 레지스터 이름 → 레지스터 내 데이터
    • 레지스터는 CPU 내부에 있기 때문에 직접 주소 지정 방식보다 더 빠르다.
    • 표현할 수 있는 레지스터 크기에 제한이 생길 수 있다.
  • 레지스터 간접 주소 지정 방식
    • 데이터를 메모리에 저장하고, 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시
    • 오퍼랜드 필드 → 레지스터 이름 → 레지스터 내 유효 주소 → 메모리 내 데이터
    • 메모리 접근 1회 → 간접 주소 지정 방식보다 빠르다.

0개의 댓글