소스 코드와 명령어
모든 소스 코드는 컴퓨터 내부에서 명령어로 변환됩니다.
소스 코드 : 프로그래밍 언어로 만든 코드입니다.
고급 언어와 저급 언어

고급 언어(High-Level Programming Language) : 개발자가 이해하기 쉽게 만든 언어 입니다.
저급 언어(Low-Level Programming Language) : 컴퓨터가 이해하고 실행하는 언어입니다.

기계어(Machine Code) : 0과 1의 명령어 비트로 이루어진 언어입니다.
어셈블리어(Assembly Language) : 0과 1로 이루어진 기계어를 읽기 편한 형태로 번역한 저급 언어입니다.
컴파일 언어와 인터프리터 언어

컴파일 언어 : 컴파일 방식으로 작동하는 프로그래밍 언어입니다.
인터프리터 언어 : 인터프리트 방식으로 작동하는 프로그래밍 언어입니다.
컴파일 언어

컴파일 언어로 작성된 소스 코드가 컴파일러에 의해 저급 언어로 변환되고(컴파일), 컴파일 결과로 저급 언어인 목적 코드가 생성됩니다.
ex) C
인터프리터 언어
인터프리터에 의해 한 줄씩 실행되고, 소스 코드 전체가 저급 언어로 변환되기까지 기다릴 필요가 없습니다.
인터프리터(Interpreter) : 소스코드를 한 줄씩 저급 언어로 변화하여 실행해 주는 도구를 의미합니다.
ex) Python
명령어의 구조
연산 코드와 오퍼랜드

명령어는 연산 코드와 오퍼랜드로 구성되어 있습니다.
오퍼랜드(Operand) : 연산에 사용할 데이터 또는 연산에 사용할 데이터가 저장된 위치(흰색 배경 필드 값)
연산 코드(Operation Code) : 명령어가 수행할 연산(색 배경 필드 값)
- 데이터 전송
- MOVE: 데이터를 옮겨라
- STORE: 메모리에 저장하라
- LOAD(FETCH): 메모리에 CPU로 데이터를 가져와라
- PUSH: 스택에 데이터를 저장하라
- POP: 스택의 최상단 데이터를 가져와라
- 산술/논리 연산
- ADD/SUBTRACT/MULTIPLY/DIVIDE: 덧셈/뺄셈/곱셈/나눗셈을 수행하라.
- INCREMENT/DECREMENT: 오퍼랜드에 1을 더하라 / 오퍼랜드에 1을 빼라
- AND/OR/NOT: AND/OR/NOT 연산을 수행하라
- COMPARE: 두 개의 숫자 또는 TURE/FALSE 값을 비교하라
- 제어 흐름 변경
- JUMP: 특정 주소로 실행 순서를 옮겨라
- CONDITIONAL JUMP: 조건에 부합할 때 특정 주소로 실행 순서를 옮겨라
- HALT: 프로그램의 실행을 멈춰라
- CALL: 되돌아올 주소를 저장한 채 특정 주소로 실행 순서를 옮겨라
- RETURN: CALL을 호출할 때 저장했던 주소로 돌아가라
- 입출력 제어
- READ(INPUT): 특정 입출력 장치로부터 데이터를 읽어라
- WRITE(OUTPUT): 특정 입출력 장치로 데이터를 써라
- START IO: 입출력 장치를 시작하라
- TEST IO: 입출력 장치의 상태를 확인하라.
주소 지정 방식
유효 주소(Effective Address) : 연산의 대상이 되는 데이터가 저장된 위치
명령어 주소 지정 방식(Addressing Modes)
- 연산에 사용할 데이터가 저장된 위치를 찾는 방법입니다.
- 유효 주소를 찾는 방법입니다.
- 다양한 명령어 주소 지정 방식들(아래에 있습니다.)
즉시 주소 지정 방식(Immediate Addressing Mode)
- 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시합니다.
- 가장 단단한 형태의 주소 지정 방식입니다.
- 연산에 사용할 데이터의 크기가 작아질 수 있지만, 빠름니다.

직접 주소 지정 방식(Direct Addressing Mode)
- 오퍼랜드 필드에 유효 주소 직접적으로 명시합니다.
- 유효 주소를 표현할 수 있는 크기가 연산 코드만큼 줄어듦니다.

간접 주소 지정 방식(Indirect Addressing Mode)
- 오퍼랜드 필드에 유효 주소의 주소를 명시합니다.
- 앞선 주소 지정 방식드에 비해 속도가 느립니다.

레지스터 주소 지정 방식(Register Addressing Mode)
- 연산에 사용할 데이터가 저장된 레지스터를 명시합니다.
- 메모리에 접근하는 속도보다 레지스터에 접근하는 것이 더 빠릅니다.

레지스터 간접 주소 지정 방식(Register Indirect Addressing Mode)
- 연산에 사용할 데이터를 메모리에 저장합니다.
- 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시합니다.

Reference
Book<혼자공부하는 컴퓨터구조+운영체제>
Image (https://www.youtube.com/watch?v=B8TDaBp3UWo&t=2s,
https://www.youtube.com/watch?v=bWPHUi6BPxo)
'Book > 혼자 공부하는 컴퓨터구조+운영체제' 카테고리의 다른 글
Chapter 6. 메모리와 캐시 메모리 (0) | 2024.01.09 |
---|---|
Chapter 5. CPU 성능 향상 기법 (0) | 2024.01.01 |
Chapter 4. CPU의 작동 원리 (0) | 2024.01.01 |
Chapter2. 데이터 (0) | 2023.12.21 |
Chapter 1. 컴퓨터 구조 시작하기 (1) | 2023.12.21 |