일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 혼자공부하는
- 138477
- Transform
- static
- 입출력장치
- 컴퓨터 구조
- 장치컨트롤러
- 프로세스
- 인터럽트
- 컴퓨터구조
- 131701
- DirectX
- 렌더링 파이프라인
- 지역변수
- CPU 스케줄링
- 독학
- BFS
- 운영체제
- 스레드
- 코딩테스트
- DDR SDRAM
- 그래프
- 보조기억장치
- C++
- 풀이
- 혼자 공부하는
- 프로그래머스
- 한빛미디어
- 멀티스레드
- dfs
- Today
- Total
빼미의 개발일기
[컴퓨터 구조] - 7강. 명령어의 구조와 주소 지정 방식 본문
이 글은 한빛미디어 '혼자 공부하는 컴퓨터 구조 + 운영체제'를 공부하고 정리한 내용입니다.
● 명령어의 구조 : 명령어는 수행할 연산의 방법 + 연산에 사용될 데이터 혹은 연산에 사용될 테이터가 저장될 위치를 가리키는 형태의 구조로 수행된다.
- 이를 일반적으로 표현하면 이렇게 표현할 수 있다.
- 연산코드(Operation Code) : 수행할 연산의 방법
- 오퍼랜드(Operand) : 연산에 사용될 데이터 혹은 연산에 사용될 테이터가 저장될 위치
오퍼랜드는 1개 이상이 될 수 도 있고 하나도 없을 수도 있다.
연산코드는 CPU마다 크 종류와 개수는 다양하지만 대표적으로 4가지의 공통점을 가지고 있다.
◆ 대표적인 연산 코드의 종류 (내용을 암기하지 말고 이런 유형이 있다 정도로만 이해)
- 데이터 전송
- MOVE : 데이터를 옮겨라
- STORE : 메모리에 저장하라
- LOAD(FETCH) : 메모리에서 CPU로 데이터를 옮겨라
- PUSH : 스택에 데이터를 저장하라
- POP : 스택의 최상단 데이터를 가져와라
- 산술/논리 연산
- ADD / SUBTRACT / MULTYPLY / DIVIDE : 사칙연산 수행
- INCREMENT / DECREMENT : 증감 연산 수행
- AND / OR / NOT : 논리 연산 수행
- COMPARE : 비교 연산 수행 (TRUE / FALSE)
- 제어흐름 변경
- JUMP : 특정 주소로 실행 순서를 이동
- CONDITIONAL JUMP : 조건에 부합할 때 특정 주소로 실행 순서를 이용
- HALT : 프로그램의 실행을 정지
- CALL : 되돌아올 주소를 저장한 채 특정 주소로 실행 순서를 이동
- RETURN : CALL을 호출할 때 저정했던 주소로 리턴
- 입출력 제어
- READ (INPUT) : 특정 입출력 장치로부터 데이터를 읽어라
- WRITE (OUTPUT) : 특정 입출력 장치로 데이터를 써라
- START IO : 입출력 장치를 시작
- TEAT IO : 입출력 장치의 상태를 확인
※ 명령어 주소 지정 방식
- 굳이 주소를 지정하는 이유 : 위의 형태로 명령어의 구조를 가지게 될 때 한 줄의 명령어당 갖는 메모리의 크기는 한계가 있다. 작은 값의 경우를 넣을 수 있지만 가령 10^15 같은 큰 수는 함께 넣을 수 없다. 때문에 메모리 주소의 크기는 큰 수를 직접 불러오는 것에 비해 작은 메모리 크기를 잦기 때문에 큰 수를 저장하고 있는 메모리의 주소를 가져오는 경우가 더 많다.
- 유효 주소 (Effective Address) : 연산에 사용할 데이터가 저장된 위치
◆ 명령어 주소 지정 방식
1. 즉시 주소 지정 방식 (Immediate Addressing Mode)
- 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시
- 가장 간단한 형태의 주소 지정 방식
- 연산에 사용할 데이터의 크기가 작아질 수 있지만, 빠름
2. 직접 주소 지정 방식 (Direct Addressing Mode)
- 오퍼랜드 필드에 유효 주소를 직접적으로 명시
- 유효 주소를 표현할 수 있는 크기가 연산 코드만큼 줄어듦.
3. 간접 주소 지정 방식 (Indirection Addressing Mode)
- 오퍼랜드 필드에 유효 주소의 주소를 명시
- 앞선 주소 지정 방식들에 비해 속도가 느림
4. 레지스터 주소 지정 방식 (Register Addressing Mode)
- 연산에 사용할 데이터가 저장된 레지스터 명시
- 메모리에 접근하는 속도보다 레지스터에 접근하는 것이 빠름
5. 레지스터 간접 주소 지정 방식 (Register Indirection Addressing Mode)
- 연산에 사용할 데이터를 메모리에 저장
- 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시
'프로그래밍 > 컴퓨터 구조' 카테고리의 다른 글
[컴퓨터 구조] - 9강. CPU의 내부 구성 - ALU와 제어장치 (0) | 2023.07.23 |
---|---|
[컴퓨터구조] - 8강. 추가 : C언어의 컴파일 과정 (0) | 2023.07.22 |
[컴퓨터 구조] - 메모리 구조 (0) | 2023.05.14 |
[컴퓨터 구조] - 6강. 소스코드와 명령어 (0) | 2023.05.12 |
[컴퓨터 구조] - 5강. 0과 1로 숫자를 표현하는 방법 (0) | 2023.05.11 |