본문 바로가기
Computer Science/Computer Architecture

[컴퓨터 구조] 고급언어와 저급언어

by 진현개발일기 2024. 8. 25.

■ 고급 언어와 저급 언어

· 고급 언어 : 개발자가 읽기 쓰기 편하게 만들어진 언어 (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)

 

   -  소스코드가 저급언어로 변환될 때까지 기다릴 필요가 없음
   -  오류가 발생하기 전까지의 코드는 실행