[TIL] 혼자 공부하는 OS

2025.03.14
·
7 min read

연산코드

  • 컴퓨터에게 명령하는 부분

  • 더하기 빼기 등의 동작

  • 영어로는 Opcode 라고도 부름

오퍼랜드 (Operand)

  • 연산 코드가 무엇에 적용될지 알려주는 부분

  • 데이터 값 + 데이터 주소 를 담음.

어셈블리어 동작

mov eax, 0       # 연산 코드: mov(옮기기), 오퍼랜드: eax(레지스터), 0(데이터)
add eax, edx     # 연산 코드: add(더하기), 오퍼랜드: eax, edx(레지스터)
str edx, [rbp-4] # 연산 코드: str(저장하기), 오퍼랜드: edx, [rbp-4](메모리 위치)
  • 명령어 구성은

    • 연산 코드(할일) + 오퍼랜드(대상)

  • 주소 지정 방식으로 데이터를 어떻게 찾을지 결정함.

연산 코드 4가지 유형

데이터 전송

  • 데이터를 옮기거나 저장하는 작업

    연산코드 의미

    MOVE

    데이터 옮기기

    STORE

    메모리에 저장하기

    LOAD

    메모리에서 CPU로 데이터를 가져오렴

    PUSH

    스택에 데이터를 저장하기

    POP

    스택에서 데이터 꺼내기

산술/논리 연산

연산 코드 의미

ADD / SUBTRACT

덧셈/뺄셈 수행

MULTIPLY / DIVIDE

곱셈/나눗셈 수행

INCREMENT / DECREMENT

1을 더하거나 빼기

AND / OR / NOT

논리 연산 수행

COMPARE

두 값을 비교

제어 흐름 변경

  • 프로그램 실행 순서를 바꾸는 작업

    연산 코드 의미

    JUMP

    특정 주소로 이동

    CONDITIONAL JUMP

    조건이 맞으면 특정 주소로 이동

    HALT

    프로그램 멈추기

    CALL

    특정 주소로 이동 후 돌아올 주소 저장

    RETURN

    저장된 주소로 돌아가기

입출력 제어

  • 입출력 장치와 데이터를 주고받는 작업

    연산 코드 의미

    READ

    입출력 장치에서 데이터 읽기

    WRITE

    입출력 장치에 데이터 쓰기

    START IO

    입출력 장치 시작

    TEST IO

    입출력 장치 상태 확인

  • 위 내용 몰라도됨 근데..

주소 설정 방식

즉시 주소 지정 방식 (Immadiate Addressing Mode)

  • 명령어 자체에 5 같은 숫자가 바로 들어있는 것을 말한다

  • 장점

    • 빠르다

  • 단점

    • 큰 숫자나 복잡한 데이터 표현은 어렵다

[명령:더해라] [5]

직접 주소 지정 방식 (Direct Addressing Mode)

  • 명령어 안에 5가 직접 들어있는 것이 아니라

  • 5가 저장된 메모리 주소가 들어있음

[명령: 더해] [주소: 100번지] → [메모리 100번지에 5가 있음]
  • 장점

    • 큰 데이터나 여러 데이터 처리 용이

  • 단점

    • 메모리를 찾아가야 하느 좀 느리다.

간접 주소 지정 방식 (Indirect Addressing Mode)

  • 설명

    • 유효 주소의 주소를 오퍼랜드 필드 에 명시하기

    • 직접 주소 지정 방식보다 유효 주소 범위 가 넓어진다. (더 많은 데이터)

    • 두 번의 메모리 접근이 필요해서

      • 직접 주소 지정 방식보다 느리다.

  • 동작방식..

    • 명령어에 지정 된 주소 → 메모리 위치 A

    • 메모리 위치 A 에 저장된 값은 또 다른 주소(메모리 위치 B) 나타냄

    • 최종적으로 메모리 위치 B에서 실제 데이터를 가져온다.

  • 왜 이렇게 복잡하게 쓰는 거지?

    1. 유연하잖아

      • 데이터 실제 위치를 명령어에 고정하지 않음

      • 중간 주소를 통해 동적으로 참조한다.

      • 프로그램 실행 중에 데이터의 위치가 변경되더라도 중간 주소만 수정하면 된다.

    2. 데이터 구조

      • 배열, 연결 리스트, 테이블 같은 복잡한 데이터 구조를 다룰 때 유리함

      • 리스트의 다음 요소 주소를 저장해두고 간접적으로 접근이 가능함.

레지스터 주소 지정 방식 (Register Addressing Mode)

  • 설명

    • 연산에 사용할 데이터를 레지스터 에 저장.

      • 해당 레지스터를 오퍼랜드 필드에 직접 명시함.

    • 직접 주소 지정 방식과 비슷함

      • CPU 내부의 레지스터를 사용하기에 메모리 접근보다 빠르다.

    • 단점

      • 레지스터 크기 제한이 있음.. 데이터 양의 제한이 있다.

    4019







- 컬렉션 아티클