컴퓨터가 이해하는 정보에는 데이터와 명령어가 있다고 했다. 이 중 명령어에 대해 공부한다.
모든 소스 코드는 컴퓨터 내부에서 명령어로 변환된다.
오늘날 개발자가 사용하는 프로그래밍 언어는 대부분 고급 언어이다. 이는 C, C++, Java, Python 등등 다양하다. 허나, 이러한 고급 언어를 컴퓨터는 이해하지 못한다. 반대로 컴퓨터가 이해할 수 있는 언어는 저수준 언어이다. 그리고 이러한 저수준 언어는 명령어로 이루어져 있다. 그래서 우리가 사용하는 고급 언어로 프로그램이 실행되려면 반드시 저수준 언어인 명령어로 변환되야 한다.
저수준 언어에는 2가지 종류가 있는데, 기계어와 어셈블리어 이다.
기계어
기계어란 0과 1의 명령어 비트로 이루어진 언어이다. 다만, 무조건 2진법으로만 표현하는 것은 아니고 16진수로 표현하기도 한다. 이러한 기계어를 보면 어떻게 컴퓨터를 작동시키는지 알기 어렵다. 그래서 저수준 언어 중에 사람이 의미를 이해하기 위해 등장한 언어가 바로 어셈블리어 이다.
어셈블리어
어셈블리어는 0과 1로 이루어진 기계어를 읽기 편하게 만든 저수준 언어이다. 하드웨어와 관련이 많은 프로그램을 개발하는 개발직군이라면 어셈블리어에 대한 기본적인 이해가 필요하다.
어셈블리어를 공부하면 프로그램이 어떤 절차로 작동하는지를 처음부터 하나씩 확인할 수 있다.
컴파일 언어와 인터프리터 언어
고급 언어가 저급 언어로 변환 되는 방식에는 2가지가 있는데, 컴파일 방식과 인터프리트 방식이다.
컴파일 방식으로 작동하는 프로그래밍 언어를 컴파일 언어, 인터프리트 방식으로 작동하는 프로그래밍 언어를 인터프리터 언어라고 한다.
컴파일 언어 : 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어이다. C 가 대표적. 컴파일 언어로 작성된 소스 코드를 저급 언어로 변환되는 과정을 컴파일이라고 한다. 컴파일을 수행하는 도구가 컴파일러이다. 컴파일러는 소스 코드에 오류가 있는지 확인하며 오류가 확인되면 컴파일에 실패한다. 고급 언어가 컴파일러에 의해 컴파일 되면 저급 언어로 변환되는데 이렇게 컴파일러를 통해 저수준 언어로 변환된 코드를 목적 코드 라고 한다.
인터프리터 언어 : 인터프리터에 의해 소스 코드가 한 줄씩 실행되는 고급 언어이다.
ex) Python. 컴파일 언어는 소스 코드 전체가 저수준으로 변환지만, 인터프리터 언어는 소스 코드를 한 줄씩 차례로 실행한다. 한 줄씩 저수준 언어로 변환하여 실행해주는 도구를 인터프리터라고 한다. 인터프리터 언어는 소스 코드를 한 줄씩 실행하기 때문에 소스 코드 전체를 저급 언어로 변환하는 시간을 기다리지 않는다.
소스 코드 내에 오류가 하나라도 있으면 컴파일 실패하는 컴파일 언어와는 다르게 인터프리터 언어는 한 줄 씩 실행되서 오류 전까지는 실행된다.
일반적으로 인터프리터 언어가 컴파일 언어보다 느리다.
하나의 프로그래밍 언어가 2가지 방식 중 한 가지만으로 저수준 언어로 변환 시키는 것은 아니다. Jave 의 경우 컴파일과 인터프리트를 동시에 수행하기도 한다.
목적 파일, 실행 파일
목적 파일 : 목적 코드로 이루어진 파일.
실행 파일 : 실행 코드로 이루어진 파일.
윈도우 기준 .exe 확장자를 가진 파일이 실행 파일이다. 목적 파일과 실행 파일은 다른 것 인데, 목적 코드가 실행 파일이 되기 위해서는 링킹 작업을 거쳐야한다.
링킹 : 여러 소스 코드(클래스나 .cpp .c 파일 등등) 이 컴파일에 의해 각각의 소스 코드로부터 목적 코드가 생성된다. 이렇게 생성된 목적 코드는 바로 실행 될 수 없고 각각의 소스 코드들이 서로 필요한 기능들을 연결 시키는 작업.
이러한 링킹 과정을 거쳐서 실행 파일이 생성된다.
마무리
- 고급 언어는 사람이 이해하기 쉽게 만들어진 프로그래밍 언어
- 저급 언어는 컴퓨터가 이해하며 실행할 수 있는 언어
- 저급 언어는 0과 1로 구성된 기계어와 기계어를 사람이 편히 읽게 형태 변환된 어셈블리어로 이루어져 있다.
- 컴파일 언어는 컴파일러가 소스 코드 전체를 저급 언어로 변환 시킨다.
- 인터프리터 언어는 인터프리트가 소스 코드를 한 줄씩 저급 언어로 변환 시키며 실행되는 언어이다.
'CS > 혼자 공부하는 컴퓨터구조와 운영체제' 카테고리의 다른 글
05 - CPU의 성능 향상 기법 (0) | 2024.06.01 |
---|---|
04 - CPU의 작동 원리 (1) | 2024.05.30 |
03 - 2 명령어 2 (1) | 2024.02.14 |
02 - 데이터 (0) | 2024.02.08 |
01 - 컴퓨터 구조 시작하기 (0) | 2024.02.08 |