이 장에서는 프로그래밍 언어로 작성한 소스 코드가 컴퓨터 내부에서 명령어가 되고 실행되는 과정을 학습한다.
고급 언어와 저급 언어
- 컴퓨터가 이해하는 언어가 아닌 사람이 이해하고 작성하기 쉽게 만들어진 언어를 고급 언어(high-level programming language)라고 한다. 대부분의 프로그램이 언어는 고급 언어에 포함된다.
- 컴퓨터가 직접 이해하고 실행할 수 있는 언어를 저급 언어(low-level programming language)라고 한다. 컴퓨터가 프로그램을 실행할 수 있기 위해서는, 고급 언어로 작성된 소스 코드가 저급 언어인 명령어로 변환되어야한다.
저급언어
기계어
기계어는 0과 1의 명령어 비트로 이루어진 언어이다. 기계어는 컴퓨터만을 위해 만들어진 언어로, 사람이 의미를 이해하기는 매우 어렵다.
어셈블리어
어셈블리어는 0과 1로 이루어진 기계어를 읽기 편한 형태로 번역한 언어이다.
- 한 줄이 하나의 명령어로, 어셈블리어는 0과 1로 이루어진 기계어를 읽기 편하게 만든 것이기 때문에, 이를 이용하여 복잡한 프로그램을 만드는 것은 쉽지 않다.
- 하드웨어와 밀접하게 맞닿아 있는 프로그램을 개발하는 개발자들은 어셈블리어를 많이 이용한다.
- 어셈블리어를 통해 프로그램이 어떤 과정으로 실행되고, 어떤 절차로 작동하는 지를 관찰할 수 있다.
컴파일 언어와 인터프리터 언어
프로그램이 실행되기 위해서는 컴퓨터가 이해할 수 있는 언어로 작성되어야 한다. 즉, 개발자들이 고급 언어로 작성한 소스 코드가 저급 언어로 변환되어 실행되어야 한다. 고급 언어가 저급언어로 변환되는 방식은 크게 컴파일 방식과 인터프리트 방식이 있다.
컴파일 언어
컴파일 언어는 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어이다. 대표적인 언어로는 C가 있다.컴파일을 수행해주는 도구를 컴파일러라고 한다.
- 컴파일은 전처리, 컴파일, 어셈블리, 링킹 과정으로 총 4가지 단계로 나뉘어진다.
- 컴파일러는 소스 코드에 문법적인 오류, 실행 가능한지 유무, 불필요한 코드 유무 등을 확인한다.
- 컴파일러는 소스 코드를 처음 부터 끝까지 저급 언어로 컴파일하고, 오류가 발견되면 컴파일에 실패하게 된다.
- 컴파일이 성공한 경우 작성한 소스 코드는 저급언어로 변환되며, 이때 컴파일러를 통해 생성된 코드를 목적 코드(object code)라고 한다.
인터프리터 언어
인터프리터 언어는 인터프리터에 의해 소스 코드가 한 줄씩 실행되는 고급 언어이다. 대표적인 언어로는 Python이 있다. 소스 코드를 한 줄씩 저급 언어로 변환하여 실행해주는 도구를 인터프리터라고 한다.
- 인터프리터 언어는 소스 코드를 한줄 씩 실행하기 때문에, 소스 코드 전체를 변환하는 시간이 필요하지 않다.
- 소스 코드 내에 오류가 있어도, 오류가 있는 줄 전까지는 올바르게 수행된다.
목적 파일, 실행 파일
- 목적 파일은 목적 코드로 이루어진 파일이다.
- 실행 파일은 실행 코드로 이루어진 파일이다.
- 컴파일러에 의해서 소스 코드가 저급 언어로 변환되면 목적 파일이 생성된다. 이때, 링커에 의해서 링킹이라는 작업을 거쳐서 목적 코드에서 실행 코드가 된다.
- 링킹은 목적 파일에 없는 외부 기능 같은 것을 목적 파일과 연결 짓는 작업이다.
본 게시물은 한빛 미디어 <혼자 공부하는 컴퓨터구조+운영체제>를 공부한 것을 정리하여 기록한 게시물입니다.
사진 출처 (맨 위 부터)
프로그래밍 언어 (저급언어, 고급언어)
프로그래밍 언어 : 주어진 어떤 문제를 해결하기 위해 인간과 컴퓨터 사이에서 의사소통을 가능하게 하는 인공적인 언어
velog.io
2. https://dannykim-5603.tistory.com/63
기계어와 어셈블리어
기계어 (Machine Language) 기계어는 컴퓨터가 사용하는 언어이다. 컴퓨터의 CPU가 명령을 처리할때 사용하는 언어이며, 아래와 같이 2진법으로 구성되어있다. 1000 1011 0100 0101 1111 1000.... 기계어도 프로
dannykim-5603.tistory.com
3. https://crasy.tistory.com/140
어셈블리 프로그래밍
어셈블리어(영어: Assembly language)는 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어이다.컴퓨터 구조에 따라 사용하는 기계어가 달라지며, 따라서 기계어에 대응되어 만들어지는
crasy.tistory.com
4. https://progdigest.blogspot.com/2017/07/3.html
컴파일러 목적, 언어의 3가지 분류, 프로그램 실행과정
먼저 컴파일러의 목적 은 다음과 같다. 먼저, 언어는 다음 3가지로 분류할 수 있다. machine language : 컴퓨터가 직접 실행 할 수 있는 프로그램 assembly language : 기계어 프로그램에서 명령과 메모리주
progdigest.blogspot.com
02_인터프리터 언어란?
파이썬은 인터프리터 언어이다. 프로그래밍 언어는 컴파일링 언어와 인터프리터 언어로 나눌 수도 있다. 아래 그림은 그 차이점을 잘 나타낸다. , 목적파일(Object File), 실행파일(Execution File)
이 후 군대에 다녀오고, 복학하여 재수강하였더니(재수강 이유는 당연히 F받은 과목이니까) 베이직 ...
blog.naver.com
'Computer Science > OS + CA' 카테고리의 다른 글
CPU의 작동 원리 - 명령어 사이클과 인터럽트 (0) | 2023.04.07 |
---|---|
CPU의 작동 원리 - 제어장치, ALU, 레지스터 (0) | 2023.04.07 |
명령어 2 - 명령어의 구조 (0) | 2023.03.31 |
데이터 (0) | 2023.03.31 |
컴퓨터 구조 시작 (0) | 2023.03.28 |