3장 명령어
2023. 3. 20. 20:53
03-1) 소스코드와 명령어
- 고급언어와 저급언어
- '사람을 위한 언어'를 고급 언어 (high-level programming language)
- '컴퓨터가 직접 이해하고 실행할 수 있는 언어'를 저급 언어 (low-level programming language)
- 고급언어로 작성된 소스 코드가 실행되려면 반드시 저급 언어, 즉 명령어로 변환되어야 함
- 저급 언어의 종류
- 기계어 (machine code) : 0과 1의 명령어 비트로 이루어진 언어
- 어셈블리어 (assembly language) : 0과 1로 표현된 명령어(기계어)를 읽기 편한 형태로 번역한 언어
- 어셈블리어를 읽으면 컴퓨터가 프로그램을 어떤 과정으로 실행하는지 하나하나 추적하고 관찰할 수 있다.
- 컴파일 언어와 인터프리터 언어
- 고급언어가 저급언어로 변환되는 두 가지 방식을 일컫는다.
- 컴파일 언어 : 컴파일 방식으로 작동하는 프로그래밍 언어
- 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어
- 대표적 언어 : C
- 저급 언어로 변환되는 과정을 컴파일, 컴파일을 수행하는 도구를 컴파일러라 함
- 컴파일러를 통해 저급 언어로 변환된 코드를 목적 코드(object code)라 한다
- 인터프리터 언어 : 인터프리트 방식으로 작동하는 프로그래밍 언어
- 인터프리터에 의해 소스 코드가 한 줄씩 실행되는 고급 언어
- 대표적 언어 : Python
- 소스 코드를 한 줄씩 한 줄씩 차례로 실행함
- 한 줄씩 저급 언어로 변환하여 실행해 주는 도구를 인터프리터라 함
- 한 줄씩 실행하기 떄문에 N번째에 오류가 있더라도 N-1번째 줄까지 올바르게 수행됨
03-2) 명령어의 구조
- 연산 코드와 오퍼랜드
- 명렁어는 연산 코드와 오퍼랜드로 구성되어 있다.
- 연산 코드 (operation code) : 명령어가 수해할 연산 (= 연산자)
- 가장 기본적인 연산 코드 유형
-
- 데이터 전송
- 산술/논리 연산
- 제어 흐름 변경
- 입출력 제어
- 오퍼랜드 (operand) : 연산에 사용할 데이터 혹은 연산에 사용할 데이터가 저장된 위치 (= 피연산자)
- 오퍼랜드 필드에는 숫자와 문자 등을 나타내는 데이터 또는 메모리나 레지스터 주소가 올 수 있음
- 그러나 데이터를 직접 명시하기 보단 메모리 주소나 레지스터 이름이 담김
- 오퍼 랜드 필드 안에 메모리 주소가 담긴다면 표현할 수 있는 데이터의 크기는 하나의 메모리 주소에 저장할 수 있는 공간만큼 커지기 때문임
- 그래서 오퍼랜드 필드를 주소필드라 부름
- 주소 지정 방식
- 즉시 주소 지정 방식 : 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시
- 직접 주소 지정 방식 : 오퍼랜드 필드에 유효 주소를 직접적으로 명시하는 방식
- 간접 주소 지정 방식 : 유효 주소의 주소를 오퍼랜드 필드에 명시
- 레지스터 주소 지정 방식 : 직접 주소 지정 방식과 비슷하게 연산에 사용할 데이터를 저장한 레지스터를 명시
- 레지스터 간접 주소 지정 방식 : 연산에 사용할 데이터를 메모리에 저장하고, 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시
'책 > 혼자 공부하는 컴퓨터 구조 + 운영체제' 카테고리의 다른 글
6장 메모리와 캐시 메모리 (0) | 2023.03.23 |
---|---|
5장 CPU 성능 향상 기법 (0) | 2023.03.21 |
4장 CPU의 작동 원리 (0) | 2023.03.21 |
2장 데이터 (0) | 2023.03.20 |
1장 컴퓨터 구조의 큰그림 (0) | 2023.03.20 |