고급 언어와 저급 언어
컴퓨터는 '명령어를 처리하는 기계'이며 명령어는 컴퓨터를 실질적으로 작동시키는 중요한 정보이다.
컴퓨터와 관련된 언어는 크게 고급 언어와 저급 언어로 나눌 수 있다.
- 고급 언어 : 사람이 이해하고 작성하기 쉽게 만들어진 언어 → 자연어, 프로그래밍 언어
- 저급 언어 : 컴퓨터가 이해하고 실행할 수 있는 언어 → 어셈블리어, 기계어
- 기계어 : 0과 1로 이루어진 명령어로 구성된 저급 언어
- 어셈블리어 0과 1로 이루어진 기계어를 읽기 편한 형태로 번역한 저급 언어
고급 언어로 작성된 소스 코드가 실행되려면 반드시 저급 언어, 즉 명령어로 변환되어야 한다.
고급 언어는 사람이 읽고 쓰기 편하며 가독성이 낫고, 편리한 문법을 제공하기 때문에 복잡한 프로그램을 구현할 수 있다.
컴파일 언어와 인터프리터 언어
고급 언어로 작성한 소스 코드가 저급 언어로 변환되는 방식에는 크게 컴파일 방식과 인터프리트 방식이 있다.
- 컴파일 언어 : 컴파일 방식으로 작동하는 프로그래밍 언어
- 컴파일 언어로 작성된 소스 코드는 코드 전체가 저급 언어로 변환되는 과정(컴파일)을 거친다. 컴파일러는 소스 코드 내에서 오류를 하나라도 발견하면 해당 소스 코드는 컴파일에 실패한다. 컴파일러를 통해 저급 언어로 변환된 코드인 목적 코드가 생성된다.
- 인터프리터 언어 : 인터프리트 방식으로 작동하는 프로그래밍 언어
- 소스 코드 전체가 저급 언어로 변환되는 컴파일 언어와는 달리, 인터프리터 언어는 인터프리터를 통해 소스 코드를 한줄씩 저급 언어로 변환하여 실행한다. 소스 코드 내에 오류가 있더라도 오류가 있는 부분 이전까지는 프로그램이 실행된다.
프로그래밍 언어의 대부분은 컴파일 언어와 인터프리터 언어 간의 경계가 모호한 경우가 많다.
연산 코드와 오퍼랜드
명령어는 연산 코드와 오퍼랜드로 구성되어 있다.
- 연산 코드 : 명령어가 수행할 연산
- 데이터 전송
- 산술/논리 연산
- 제어 흐름 변경
- 입출력 제어
- 오퍼랜드 : 연산에 사용할 데이터 또는 연산에 사용할 데이터가 저장된 위치
- 오퍼랜드 필드에는 연산에 사용할 데이터를 직접 명시하기보다는 주로 데이터가 저장된 위치를 명시한다.
주소 지정 방식
주소 지정 방식 : 연산에 사용할 데이터 위치를 찾는 방법
명령어의 오퍼랜드 필드에 메모리나 레지스터의 주소(데이터가 저장된 위치)를 담는 이유는 명령어의 길이 때문이다. 명령어의 종류에 따라 오퍼랜드 필드에 할당할 수 있는 공간이 정해져 있기 때문에 표현할 수 있는 데이터의 크기가 작다. 하지만 오퍼랜드 필드에 메모리 주소를 담는다면 표현할 수 있는 데이터의 크기를 하나의 메모리 주소에 저장할 수 있는 공간만큼 크게 할 수 있다.
1) 즉시 주소 지정 방식 : 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시하는 방식.
2) 직접 주소 지정 방식 : 오퍼랜드 필드에 유효 주소를 직접적으로 명시하는 방식.
3) 간접 주소 지정 방식 : 유효 주소의 주소를 오퍼랜드 필드에 명시하는 방식.
4) 레지스터 주소 지정 방식 : 직접 주소 지정 방식과 유사하게 연산에 사용할 데이터를 저장한 레지스터를 오퍼랜드 필드에 직접 명시하는 방식.
5) 레지스터 간접 주소 지정 방식 : 연산에 사용할 데이터를 메모리에 저장하고, 유효 주소를 저장한 레지스터를 오퍼랜드 필드에 명시하는 방식.
reference :
'CS > 컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] 데이터 (0) | 2023.02.14 |
---|---|
[컴퓨터구조] 컴퓨터 구조 시작하기 (0) | 2023.02.11 |