소스 코드와 명령어

bebrain·2023년 5월 24일
0

컴퓨터구조

목록 보기
4/8
소스코드(개발자가 프로그래밍 언어로 만든 코드) : *고급 언어

↓ 변환

명령어(컴퓨터를 작동시키는 정보) : *저급 언어

고급 언어와 저급 언어

*고급 언어

사람을 위한 언어

*저급 언어

컴퓨터가 직접 이해하고 실행할 수 있는 언어

  1. 기계어 : 이진수(0과 1로 표현/가독성을 위해 16진수로도 표현한다)

  2. 어셈블리어 : 기계어를 읽기 편한 형태로 번역한 언어

고급 언어 ▶ 저급 언어로 변환하는 방식

컴파일 방식과 인터프리트 방식 두 가지가 있다.

컴파일 방식으로 작동하는 프로그래밍 언어를 컴파일 언어,
인터프리트 방식으로 작동하는 프로그래밍 언어를 인터프리터 언어라고 한다.

1. 컴파일 언어 : 소스코드 전체가 저급언어로 변환

ex) c언어

컴파일(compile) : 소스 코드 전체가 저급언어로 변환되는 과정
컴파일러(compiler) : 컴파일을 수행해 주는 도구
목적 코드(object code) : 컴파일러를 통해 저급 언어로 변환된 코드

  • 코드 내에 오류가 하나라도 있으면 코드 전체가 실행되지 않음
  • 번역과 유사(번역하는 과정만 기다리면 그 다음부터 알아서 읽을 수 있다)

2. 인터프리터 언어 : 소스코드 한 줄씩 저급언어로 변환

ex) python

인터프리터(interpreter) : 소스 코드를 한 줄씩 저급 언어로 변환하여 실행해 주는 도구

  • 코드 내에 오류가 있더라도 컴파일과 달리 오류코드 직전까지는 실행
  • 통역과 유사(끝날 때까지 설명을 기다려야 한다)

컴파일 언어 vs 인터프리터 언어

출처

일반적으로 컴파일 > 인터프리터 언어보다 빠르다. 인터프리터 언어는 소스 코드 마지막에 도달할 때까지 한 줄 한 줄씩 저급 언어로 해석하며 실행해야 하기 때문이다.

컴파일 언어와 인터프리터 언어는 상호 배타적인 개념이 아니다. 컴파일이 가능하다고 해서 인터프리트가 불가능하거나 인터프리터 언어라고 해서 컴파일이 불가능한 것은 아니다. Java처럼 저급 언어가 되는 과정에서 컴파일과 인터프리트를 동시에 수행하는 언어도 있다.

링커(linker) : 링킹을 담당하는 프로그램

여러 개의 object file들을 하나로 합쳐 실행 파일로 만드는 과정이다.

컴파일 과정을 거친 저급 언어의 파일을 목적 파일(object file)이라고 하는데, 목적 파일 자체만으로는 아무런 동작도 할 수 없다.

작성한 소스코드가 사용하는 다른 프로그램이나 라이브러리를 가져와 연결하는 링킹 작업을 거쳐 실행 파일이 된다.

0개의 댓글