*혼자공부하는컴퓨터구조+운영체제(강민철 / 한빛미디어) 책과 강의를 듣고 작성한 내용입니다 :)
명령어 한 줄은 연산 코드와 오퍼랜드로 이루어져 있습니다.
📗 연산 코드와 오퍼랜드
✔ 연산 코드 : 명령어가 수행할 연산
가장 기본적인 연산 코드 유형은 크게 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 |