CH03 명령어
03-1 소스 코드와 명령어
고급 언어 - 개발자가 이해하기 쉽게 만든 언어 ex. C언어, JAVA, C++
저급 언어 - 컴퓨터가 이해하고 실행하는 언어

어셈블리어


컴파일 언어와 인터프리트 언어
고급 언어에서 저급 언어로 변환되는 과정은 크게 두 가지가 있다
1) 컴파일 방식 2) 인터프리트 방식

1) 컴파일 방식
컴파일러가 소스 코드 전체를 0과 1의 명령어로 이루어진 저급 언어로 변환
컴파일된 저급 언어를 목적 코드라고 한다

2) 인터프리트 언어
인터프리터에 의해 한 줄씩 실행
소스 코드 전체가 변환되기까지 기다릴 필요 없음
컴파일 언어와 인터프리트 언어의 차이
컴파일 언어 - 컴파일 중 오류가 발생하면 소스 코드 전체가 실행되지 않음
인터프리트 언어 - 인퍼프리트 중 오류가 발생하면 오류 발생 전까지의 코드는 실행

컴파일과 인터프리트 언어 과정 살펴보기

03-2 명령어의 구조
무엇을 대상으로, 무엇을 수행하라

수행할 연산 - 연산에 사용될 데이터 or 연산에 사용될 데이터가 저장된 위치 -> 연산 코드 - 오퍼랜드 구조
+ 기계어와 어셈블리어도 명령어다
오퍼랜드
연산에 사용될 데이터 or 연산에 사용될 데이터가 저장된 위치 (주소 필드)


연산 코드
수행할 연산
연산 코드가 담고 있는 내용
1) 데이터 전송
2) 산술/ 논리 연산
3) 제어 흐름 변경
4) 입출력 제어
대표적인 연산 코드의 종류
1) 데이터 전송
MOVE 데이터를 옮겨라
STORE 메모리에 저장하라
LOAD (FETCH) 메모리에서 CPU 로 데이터를 가져와라
PUSH 스택에 데이터를 저장하라
POP 스택의 최상단 데이터를 가져와라
2) 산술/ 논리 연산
ADD/ SUBTRACT/ MULTIPLY/ DIVIDE - 덧셈/ 뺄셈/ 곱셈/ 나눗셈을 수행하라
INCREMENT/ DECREMENT - 오퍼랜드에 1을 더하라/ 오퍼랜드에 1을 빼라
AND/ OR/ NOT - AND/ OR/ NOT 연산을 수행하라
COMPARE - 두 개의 숫자 또는 TRUE/ FALSE 값을 비교하라
3) 제어 흐름 변경
JUMP - 특정 주소로 실행 순서를 옮겨라
CONDITIONAL JUMP - 조건에 부합할 때 특정 주소로 실행 순서를 옮겨라
HALF - 프로그램의 실행을 멈춰라
CALL - 되돌아올 주소를 저장한 채 특정 주소로 실행 순서를 옮겨라
RETURN - CALL 을 호출할 때 저장했던 주소로 돌아가라
4) 입출력 제어
READ (INPUT) 특정 입출력 장치로부터 데이터를 읽어라
WRITE (OUTPUT) 특정 입출력 장치로부터 데이터를 써라
START IO 입출력 장치를 시작하라
TEST IO 입출력 장치의 상태를 확인하라
오퍼랜드에 주소를 넣는 이유
명령어 내에서 표현할 수 있는 데이터 크기가 제한되기 때문
오퍼랜드 개수가 많아지면 하나의 오퍼랜드에 표현할 수 있는 크기가 작아진다
표현할 수 있는 크기에 제한 받지 않게 하기 위해서 아래처럼 주소를 저장한다


유효 주소 Effective Address
연산에 사용할 데이터가 저장된 위치
명령어 주소 지정 방식 Addressing Modes
연산에 사용할 데이터가 저장된 위치를 찾는 방법
유효한 주소를 찾는 방법
다양한 명령어 주소 지정 방식들
1) 즉시 주소 지정 방식 Immediate Addressing Mode
연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시
가장 간단한 형태의 주소 지정 방식
연산에 사용할 데이터의 크기가 작아질 수 있지만, 빠름

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

3) 간접 주소 지정 방식 Indirect Addressing Mode
오퍼랜드 필드에 유효 주소의 주소를 명시
앞선 주소 지정 방식들에 비해 속도가 느림

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

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

'크래프톤정글 > 혼공컴운' 카테고리의 다른 글
| [혼공컴운] CH06 메모리와 캐시 메모리 (4) | 2024.10.08 |
|---|---|
| [혼공컴운] CH05 CPU 성능 향상 기법 (1) | 2024.10.07 |
| [혼공컴운] CH04 CPU 와 작동 원리 (1) | 2024.10.05 |
| [혼공컴운] CH02 데이터 (1) | 2024.10.02 |
| [혼공컴운] CH01 컴퓨터 구조를 알아야 하는 이유 (2) | 2024.09.25 |