반응형
컴퓨터 언어는 크게 고급언어와 저급언어로 나뉩니다. 고급언어는 일반적으로 개발자가 사용하는, 인간이 이해하기 쉬운 형태의 언어입니다. 반면, 저급언어는 컴퓨터가 직접 이해하고 처리할 수 있는 언어로, 주로 기계어(0과 1로 구성)와 어셈블리어로 구성됩니다.
고급언어와 저급언어
- 고급언어: 개발자가 사용하는 언어로, 컴퓨터가 직접 이해할 수 없습니다. 이를 컴퓨터가 이해할 수 있는 언어로 변환해야 합니다.
- 저급언어:
- 기계어: 0과 1로만 구성된 컴퓨터의 기본 언어입니다.
- 어셈블리어: 기계어보다 약간 더 이해하기 쉬운 형태로, 명령어로 구성됩니다.
고급언어에서 저급언어로의 변환
- 컴파일러: 소스 코드 전체를 읽어 한 번에 기계어로 변환합니다. 컴파일 과정에서 오류가 발생하면 변환을 완료할 수 없습니다.
- 인터프리터: 소스 코드를 한 줄씩 읽어 바로 기계어로 변환하고 실행합니다. 문제가 발생하면 그 시점에서 실행을 중단합니다.
컴파일 과정
- 전처리: 라이브러리, 매크로 등을 처리합니다. 이 시점에서 코드는 여전히 고급언어 상태입니다.
- 컴파일: 고급언어를 어셈블리어로 변환합니다.
- 어셈블링: 어셈블리어를 기계어로 변환합니다.
- 링킹: 서로 다른 파일들을 연결하여 하나의 실행 파일(.exe)을 생성합니다.
CPU의 명령어 처리
CPU는 명령어를 처리하여 연산을 수행합니다. 이 과정에는 다양한 연산과 데이터 처리 방식이 포함됩니다.
- 연산 종류:
- 산술 연산: 사칙 연산, 논리 연산 등
- 제어 연산: 점프, 조건부 점프, 함수 호출 및 반환 등
- 데이터 전송
- 입출력
- 오퍼랜드: 데이터 값 또는 데이터의 메모리 위치 주소를 저장합니다.
- 데이터 위치 주소 저장의 이유: 오퍼랜드의 크기가 한정되어 있어 긴 데이터 값을 직접 저장할 수 없기 때문에, 데이터가 저장된 주소를 참조하여 필요할 때 데이터를 사용합니다.
명령어 주소 지정 방식
CPU는 메모리에서 데이터를 가져와 명령어를 처리합니다. 이를 위한 다양한 주소 지정 방식이 있습니다.
- 즉시 주소 지정 방식: 오퍼랜드에 데이터 값을 직접 저장합니다.
- 직접 주소 지정 방식: 오퍼랜드에 데이터의 유효 주소를 저장합니다.
- 간접 주소 지정 방식: 유효 주소의 주소를 저장합니다. 공간은 넓게 사용할 수 있지만, 메모리 탐색으로 인해 속도가 느립니다.
- 레지스터 주소 지정 방식: 레지스터에 데이터 값을 저장합니다.
- 간접 레지스터 주소 지정 방식: 레지스터에 유효 주소가 저장되어 있으며, 이를 참조하여 값을 가져옵니다.
이러한 과정을 통해 고급언어로 작성된 코드는 저급언어로 변환되어 CPU가 이해하고 처리할 수 있게 됩니다.
반응형