■ 고급 언어와 저급 언어
· 고급 언어 : 개발자가 읽기 쓰기 편하게 만들어진 언어 (ex: C, C++, C#, Java, etc..)
· 저급 언어 : 컴퓨터가 이해하고 실행하기 위해 만들어진 언어 (ex. 기계어, 어셈블리어)
■ 저급언어
· 기계어: 이진수(0과 1)로 표현됨.
· 어셈블리어: 사람이 그나마 이해할 수 있게 기계어를 변환한 저급 언어.
(예시)
작성한 C#의 NET 프레임워크 내 JIT 컴파일러가 생성하는 어셈블리 코드를 까보면 아래와 같이 보이는 ret, mov, imul 등이 어셈블리어의 명령어이다.
[레지스터]
· eax: 32비트 레지스터
· rbp: 스택 복귀 주소
· rsp: 현재 스택 주소
· edi: 목적지에 대한 주소
· esi: 시작지에 대한 주소
■ 고급언어
고급언어에서 컴퓨터가 이해할 수 있도록 저급언어로 변환되는 과정은 크게 두 가지가 있다.
· 컴파일 언어
컴파일러라는 특수한 프로그램을 통해 저급 언어가 변환되는 언어.
[컴파일 과정]
(1) 개발자 소스코드 작성 (C++, C#, etc..)
(2) 전처리 (Preprocessing) : #include나 #define 과 같은 전처리 지시문 처리
(3) 컴파일 (Compile)
- 전처리된 소스 코드를 중간언어(IL) 혹은 어셈블리(Assembly)어로 변환.
- 중간 코드를 기계어 코드로 변환하여 컴퓨터가 실행할 수 있는 목적 파일(Obj) 생성
(4) 링킹 (Linking)
- 여러 개의 목적 파일과 필요한 라이브러리들을 결합하여 실행 가능한 프로그램 (Executable) 생성
- 이 과정에서 함수나 변수의 참조를 연결, 최종적으로 실행 파일(EXE)이 생성됨
· 인터프리터 언어
인터프리터에 의해 한 줄씩 실행되는 언어. (ex. Python)
- 소스코드가 저급언어로 변환될 때까지 기다릴 필요가 없음
- 오류가 발생하기 전까지의 코드는 실행
'Computer Science > Computer Architecture' 카테고리의 다른 글
[컴퓨터 구조] 명령어, 주소 지정 방식 (0) | 2024.09.17 |
---|---|
[컴퓨터 구조] ALU, 제어 장치 (0) | 2024.09.17 |
[컴퓨터 구조] 0과 1로 표현하는 문자 (0) | 2024.08.25 |
[컴퓨터 구조] 0과 1로 표현하는 숫자 (0) | 2024.08.25 |
[컴퓨터 구조] 핵심 부품, 시스템 버스 (0) | 2024.08.25 |