Top 29 컴파일러 란 Quick Answer

You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 컴파일러 란 on Google, you do not find the information you need! Here are the best content compiled and compiled by the Toplist.maxfit.vn team, along with other related topics such as: 컴파일러 란 컴파일러 원리, c++ 컴파일러란, 컴파일러 종류, 컴파일러 역할, 소스코드 컴파일, 컴파일러 인터프리터 차이, 컴파일 링 뜻, 컴파일러 방식


컴파일러가 뭐야? 프로그램은 어떻게 만들어질까? 알고 넘어가자 What is a compiler?
컴파일러가 뭐야? 프로그램은 어떻게 만들어질까? 알고 넘어가자 What is a compiler?


취약점 점검 및 보안생활화 : 네이버 블로그

  • Article author: blog.naver.com
  • Reviews from users: 16383 ⭐ Ratings
  • Top rated: 4.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 취약점 점검 및 보안생활화 : 네이버 블로그 컴파일러는 소스 파일에 작성된 고급 언어 명령을 해석하여 기계어 코드로 바꾸고 그 결과를 목적 파일(Object File)에 써 넣는다. 즉 컴파일러는 소스 … …
  • Most searched keywords: Whether you are looking for 취약점 점검 및 보안생활화 : 네이버 블로그 컴파일러는 소스 파일에 작성된 고급 언어 명령을 해석하여 기계어 코드로 바꾸고 그 결과를 목적 파일(Object File)에 써 넣는다. 즉 컴파일러는 소스 …
  • Table of Contents:
취약점 점검 및 보안생활화 : 네이버 블로그
취약점 점검 및 보안생활화 : 네이버 블로그

Read More

컴파일러란 ?

  • Article author: rbqja.tistory.com
  • Reviews from users: 49268 ⭐ Ratings
  • Top rated: 4.6 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 컴파일러란 ? 컴파일러란 ? · 1) 인터프리터 언어 (Interpreted Language). 컴파일러를 거쳐 기계어로 변환되지 않고 바로 실행되는 프로그래밍 언어를 말한다. · 2) … …
  • Most searched keywords: Whether you are looking for 컴파일러란 ? 컴파일러란 ? · 1) 인터프리터 언어 (Interpreted Language). 컴파일러를 거쳐 기계어로 변환되지 않고 바로 실행되는 프로그래밍 언어를 말한다. · 2) … 1. 컴파일러란 ? 컴퓨터는 아쉽게도 우리가 열심히 C 언어로 작성한 코드(소스 파일)를 이해하지 못한다 C 언어만이 아니라 파이썬도 자바도 다 이해 하지 못한다. 우리가 만든 코드(소스 파일)를 컴파일러라는 통..
  • Table of Contents:

김규범님의 블로그

컴파일러란 본문

컴파일러란 ?
컴파일러란 ?

Read More

[CS] 컴파일러(Compiler)란?

  • Article author: yanacoding.tistory.com
  • Reviews from users: 45753 ⭐ Ratings
  • Top rated: 3.5 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [CS] 컴파일러(Compiler)란? – 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어 혹은 컴퓨터 언어로 옮기는, 일종의 번역 프로그램. – 비주얼, 터보, 볼랜드 등 언어에 … …
  • Most searched keywords: Whether you are looking for [CS] 컴파일러(Compiler)란? – 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어 혹은 컴퓨터 언어로 옮기는, 일종의 번역 프로그램. – 비주얼, 터보, 볼랜드 등 언어에 … 1. 컴파일러(Compiler) – 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어 혹은 컴퓨터 언어로 옮기는, 일종의 번역 프로그램. – 비주얼, 터보, 볼랜드 등 언어에 따라 다양한 컴파일러 종류가 존..
  • Table of Contents:

1 컴파일러(Compiler)

태그

관련글

댓글0

공지사항

최근글

인기글

최근댓글

태그

전체 방문자

티스토리툴바

[CS] 컴파일러(Compiler)란?
[CS] 컴파일러(Compiler)란?

Read More

컴파일러 – 위키백과, 우리 모두의 백과사전

  • Article author: ko.wikipedia.org
  • Reviews from users: 14479 ⭐ Ratings
  • Top rated: 4.1 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 컴파일러 – 위키백과, 우리 모두의 백과사전 컴파일러(compiler, 순화 용어: 해석기, 번역기)는 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 언어 번역 프로그램을 말한다. …
  • Most searched keywords: Whether you are looking for 컴파일러 – 위키백과, 우리 모두의 백과사전 컴파일러(compiler, 순화 용어: 해석기, 번역기)는 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 언어 번역 프로그램을 말한다.
  • Table of Contents:

역사[편집]

원리[편집]

컴파일러의 실행 단계[편집]

분류[편집]

참고 자료[편집]

외부 링크[편집]

컴파일러 - 위키백과, 우리 모두의 백과사전
컴파일러 – 위키백과, 우리 모두의 백과사전

Read More

[컴파일러] 컴파일러란? — Go devlog

  • Article author: gobae.tistory.com
  • Reviews from users: 7361 ⭐ Ratings
  • Top rated: 3.4 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [컴파일러] 컴파일러란? — Go devlog 컴파일러는 명령어 번역 프로그램이다. 컴파일러는 소스 코드 혹은 원시 코드를 목적 코드로 옮겨주는 역할을 한다. 쉽게 설명하면 여기서 소스 코드는 … …
  • Most searched keywords: Whether you are looking for [컴파일러] 컴파일러란? — Go devlog 컴파일러는 명령어 번역 프로그램이다. 컴파일러는 소스 코드 혹은 원시 코드를 목적 코드로 옮겨주는 역할을 한다. 쉽게 설명하면 여기서 소스 코드는 … 컴파일러 컴파일러는 명령어 번역 프로그램이다. 컴파일러는 소스 코드 혹은 원시 코드를 목적 코드로 옮겨주는 역할을 한다. 쉽게 설명하면 여기서 소스 코드는 사람이 작성한 코드이며, 목적 코드는 기계어(컴..
  • Table of Contents:

블로그 메뉴

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

티스토리툴바

[컴파일러] 컴파일러란? — Go devlog
[컴파일러] 컴파일러란? — Go devlog

Read More

컴파일러란 무엇인가

  • Article author: hteacher.tistory.com
  • Reviews from users: 3085 ⭐ Ratings
  • Top rated: 4.8 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 컴파일러란 무엇인가 컴파일러란 프로그래밍 언어로 작성된 인간의 의도(프로그램)를 기계(컴퓨터)가 이해하게 기계언어로 변환하는 변환기입니다. · 기계어란 기계가 이해하는 2진 숫자(0과 1) … …
  • Most searched keywords: Whether you are looking for 컴파일러란 무엇인가 컴파일러란 프로그래밍 언어로 작성된 인간의 의도(프로그램)를 기계(컴퓨터)가 이해하게 기계언어로 변환하는 변환기입니다. · 기계어란 기계가 이해하는 2진 숫자(0과 1) … <컴파일러란 무엇인가> 앞에서 C 언어안 무엇이고, C 언어의 탄생에 대해서 간단히 이야기해보았습니다. 지금은 컴파일러가 무엇인지를 설명하고자 잠시 다른 이야기로 옮겨가 보겠습니다. 컴파일러란 프로그래밍..
  • Table of Contents:
컴파일러란 무엇인가
컴파일러란 무엇인가

Read More

컴파일러란 무엇일까 (Compiler)

  • Article author: onehigh.tistory.com
  • Reviews from users: 27702 ⭐ Ratings
  • Top rated: 3.4 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 컴파일러란 무엇일까 (Compiler) 컴파일러(compiler) 란 … 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 언어 번역 프로그램을 말한다. 원래의 문서를 소스 … …
  • Most searched keywords: Whether you are looking for 컴파일러란 무엇일까 (Compiler) 컴파일러(compiler) 란 … 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 언어 번역 프로그램을 말한다. 원래의 문서를 소스 … 컴파일러(compiler) 란 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 언어 번역 프로그램을 말한다. 원래의 문서를 소스 코드 혹은 원시 코드라고 부르고, 출력된 문서를 목적 코드라..
  • Table of Contents:

컴파일러(compiler) 란

컴파일(compile) 이란

태그

‘인터넷 상식’ Related Articles

컴파일러란 무엇일까 (Compiler)
컴파일러란 무엇일까 (Compiler)

Read More

코드 컴파일러 란 무엇이며 어떤 기능을합니까?

  • Article author: ko.eferrit.com
  • Reviews from users: 3696 ⭐ Ratings
  • Top rated: 3.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 코드 컴파일러 란 무엇이며 어떤 기능을합니까? 컴파일러 는 사람이 읽을 수있는 소스 코드 를 컴퓨터 실행 가능 컴퓨터 코드 로 변환하는 프로그램 입니다. 이를 성공적으로 수행하려면 사람이 읽을 수있는 코드가 … …
  • Most searched keywords: Whether you are looking for 코드 컴파일러 란 무엇이며 어떤 기능을합니까? 컴파일러 는 사람이 읽을 수있는 소스 코드 를 컴퓨터 실행 가능 컴퓨터 코드 로 변환하는 프로그램 입니다. 이를 성공적으로 수행하려면 사람이 읽을 수있는 코드가 …
  • Table of Contents:

Also see

Newest ideas

Alternative articles

코드 컴파일러 란 무엇이며 어떤 기능을합니까?
코드 컴파일러 란 무엇이며 어떤 기능을합니까?

Read More

컴파일러란

  • Article author: velog.io
  • Reviews from users: 33029 ⭐ Ratings
  • Top rated: 5.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 컴파일러란 컴파일러 · Lexical analysis: 소스 프로그램을 읽음, 토큰 · Syntax analysis: 스캐너에서 읽은 토큰을 구문 분석을 통해 언어에 속하는 지 파악 · Semantic … …
  • Most searched keywords: Whether you are looking for 컴파일러란 컴파일러 · Lexical analysis: 소스 프로그램을 읽음, 토큰 · Syntax analysis: 스캐너에서 읽은 토큰을 구문 분석을 통해 언어에 속하는 지 파악 · Semantic … 컴파일러: 언어를 번역하는 프로그램
  • Table of Contents:
컴파일러란
컴파일러란

Read More

컴파일러, 프로그래밍 언어 정리, Visual Studio 설치 및 사용 방법 정리 (C언어)

  • Article author: embeddedchallenge.tistory.com
  • Reviews from users: 22306 ⭐ Ratings
  • Top rated: 3.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 컴파일러, 프로그래밍 언어 정리, Visual Studio 설치 및 사용 방법 정리 (C언어) 2. 컴파일러란 무엇인가? 컴파일러는 사람이 작성한 코드를. 기계가 해석하기 위한 기계어로 변환시키는 역할을 수행하는 또다른 프로그램입니다. …
  • Most searched keywords: Whether you are looking for 컴파일러, 프로그래밍 언어 정리, Visual Studio 설치 및 사용 방법 정리 (C언어) 2. 컴파일러란 무엇인가? 컴파일러는 사람이 작성한 코드를. 기계가 해석하기 위한 기계어로 변환시키는 역할을 수행하는 또다른 프로그램입니다. 안녕하세요. 오늘부터 소프트웨어의 가장 기본인 C 프로그래밍을 글을 쭉 써보는 시간을 가지도록 하겠습니다. C 언어 강의가 많이 있지만, 저에게 있어서 최고의 강의는 ‘윤성우의 열혈 C 프로그래밍’인것 같습니..
  • Table of Contents:

태그

관련글

댓글0

공지사항

최근글

인기글

최근댓글

태그

전체 방문자

컴파일러, 프로그래밍 언어 정리, Visual Studio 설치 및 사용 방법 정리 (C언어)
컴파일러, 프로그래밍 언어 정리, Visual Studio 설치 및 사용 방법 정리 (C언어)

Read More


See more articles in the same category here: https://toplist.maxfit.vn/blog/.

컴파일러란 ?

1. 컴파일러란 ?

컴퓨터는 아쉽게도 우리가 열심히 C 언어로 작성한 코드(소스 파일)를 이해하지 못한다

C 언어만이 아니라 파이썬도 자바도 다 이해 하지 못한다.

우리가 만든 코드(소스 파일)를 컴파일러라는 통역기가 기계어로 번역해주면,

그제야 컴퓨터가 이해한다.

지구에 도착한 외계인의 말을 번역해준 외계어 전문가처럼,

컴파일러는 코드를 컴퓨터에 번역해주는 번역가라고 할 수 있다

이 번역하는 과정을 컴파일이라고 한다.

● 컴파일러의 필요성.

인간은 문제를 해결하기 위해 컴퓨터를 사용하며 컴퓨터와 의사소통을 하는데 ‘언어’가 필요하다

컴퓨터는 기계어를 사용하지만 인간이 기계어를 사용하여 문제를 표현하기란 무척 어렵기 때문에

인간은 사람 중심 언어인 고급 언어를 사용한다.

그런데 인간이 사용하는 고급 언어는 컴퓨터가 이해하지 못하며,

따라서 인간이 사용하는 고급언어를 기계어로 변환해주는 컴파일러가 필요한 것이다.

● 컴파일 언어의 종류

C, C++, Java, C#

● C 언어

프로그램을 보다 간단하게 사용하고 설계할 수 있게 하는 운영체제의 공통언어

70년대에 만들어진 절차지향 언어이다 .

절차지향은 명령어를 몇 회 어떤 순위로 실행할지 판단하는 방식이다.

● C++

C언어의 단점을 보완하고 바꾼 언어

C언어가 절차지향이라면 C++언어는 객체지향이다

C++에서 더 발전된 것이 C#이다.

1) 인터프리터 언어 (Interpreted Language)

컴파일러를 거쳐 기계어로 변환되지 않고 바로 실행되는 프로그래밍 언어를 말한다.

프로그래밍 언어 설계할 때 언어 설계자가 자신이 원하는 부분을 구현하는 데에 도움을 준다. 그래서 언어 설계 기간이 엄청나게 단축된다.

프로그래밍 언어 설계할 때 언어 설계자가 자신이 원하는 부분을 구현하는 데에 도움을 준다. 그래서 언어 설계 기간이 엄청나게 단축된다.

– 인터프리터 언어의 종류 : Python, Ruby, Perl, PHP, JavaScript

2) 크로스 컴파일러 (Cross compiler)

다른 플랫폼(Windows, Mac)에서 다른 플랫폼(Android, iOS, Embedded OS)의 실행파일을 만들어주는 컴파일러를 크로스 컴파일러라고 말한다.

크로스 컴파일러 툴은 임베디드 시스템 혹은 여러 플랫폼에서 실행파일을 생성하는데 사용된다.

일반적으로 개발의 용이성을 위해, 개발 환경이 편한 곳에서 개발 및 컴파일을 하고, 타겟 디바이스에 실행파일을 옮겨 넣는 식으로 개발한다. 그래서 크로스 컴파일러가 필요하다.

3) 바이트 코드 (Byte code)

고급 언어로 작성된 소스 코드를 가상머신이 이해할 수 있는 중간 코드로 컴파일 한 것을 말한다.

바이트코드는 인터프리터 방식으로 해석한다. 즉 바이트코드를 생성하는 것까지가 컴파일이고, 바이트코드 자체는 인터프리터 언어라는 것.

2. 컴파일러와 인터프리터의 장단점과 차이점

1) 컴파일러

[ 장점 ]

1. 매번 번역할 필요가 없다 .

2. 인터프리터에 비해 실행 속도가 빠르다.

3. 전체 실행 시간 면에서 효율적이다.

[ 단점 ]

1 .실행 기계가 달라지면 새로 컴파일 해야한다.

2. 한 줄의 입력 시 프로그램이 때론 몇 백 개의 기계어로 번역되기 때문에 그 프로그램은 큰 기억용량을 요구한다. 특히 입출력 명령은 입출력 형식을 위한 코드 외에 기계 상태 파악코드로 인해 큰 기억 장치가 요구된다.

2) 인터프리터

[ 장점 ]

1. 컴파일러가 비교적 간단하게 되므로 마이크로컴퓨터의 컴파일러나 회화 형언어의 언어처리계에 잘 이용된다.

2. 프로그램이 될 때까지 원시 언어의 형태를 유지하기 때문에 기억 장소가 따로 필요하지 않다.

[ 단점 ]

1. 원시 프로그램을 직접 실행하기 때문에 이 실행에 필요한 소프트웨어가 항상 기계 안에 상주하면서 원시 프로그램의 명령들을 받아서 치리해야 한다. 만일 반복을 하게 되면 그때마다 원시 프로그램을 해석하고 처리해야 하기 때문에 많은 시간이 걸리기도 한다.

2. 실행 속도가 늦다

3. 인터프리터의 시행 시간은 컴파일러 방법에 비해 비효율적이다.

3. 컴파일러와 인터프리터의 차이점.

1) 컴파일러

1. 한번에 모두 읽고 실행하며, 첫 컴파일 과정이 오래 걸릴 수 있다.

2. 컴파일 이후에는 실행이 빠르고 더 이상 변환하지 않아도 된다.

3. 대표적으로 자바가 있다.

2) 인터프리터

1. 코드를 한 줄 한 줄 읽어가며 명령을 처리한다.

2. 바로바로 수정 할 수 있어 용이하다

3. 한 문장씩 처리하기 때문에 속도는 컴파일러 언어에 비해 느리다.

[CS] 컴파일러(Compiler)란?

1. 컴파일러(Compiler)

– 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어 혹은 컴퓨터 언어로 옮기는, 일종의 번역 프로그램.

– 비주얼, 터보, 볼랜드 등 언어에 따라 다양한 컴파일러 종류가 존재한다.

– 보통 high-level 프로그래밍 언어를 실행 프로그램으로 만들기 위한 lower level언어(ex 어셈블리 언어, object 코드, 등)로 바꾸는 데에 사용

– 원래의 문서를 ‘소스 코드’ 혹은 원시 코드라고 부름

– 출력된 문서를 ‘목적 코드’라고 부름

1) 컴파일러 실행 단계

(1) 구문 분석 : 소스 코드 파일을 읽어 추상 구문 트리 생성, 문법에 맞지 않는 소스 코드는 사용자에게 알림

(2) 최적화 : 추상 구문 트리 분석 및 최적화.

(3) 코드 생성 : 목적 코드 생성.(기계어 번역의 경우 레지스터 할당, 연산 순서 바꾸기 외)

(4) 링킹 : 기계어 번역의 경우, 여러 라이브러리의 목적 코드를 묶어 하나의 실행파일 생성.

– 일부는 이 과정을 컴파일 과정에서 제외함.

2) 컴파일 과정

(1) 전처리기(Prrprocessor) : #include 등 #이 붙은 전처리기 구문을 처리.

(2) 컴파일러로 컴파일

(3) 어셈블러(Assembler) : 완전히 기계어로 바꾸어주는 역할

(4) 링커(Linker) 여러 개의 오브젝트 파일을 하나로 합치거나, 라이브러리를 합침

3) 컴파일러의 필수 조건

(1) 컴파일러는 옮김의 과정에서 프로그램의 뜻을 보존하여야 함

즉, 입력받은 프로그램의 의미를 충실히 따라야 함

(2) 컴파일러는 입력으로 들어온 프로그램을 실용적으로 개선해야 함

4) 컴파일러의 기능

(1) 고급언어를 직접 기계어 코드로 변환

(2) 자바의 경우 바이트 코드로 변환한다. 중간단계의 코드를 생성하고 이를 해석하여 실행

자바는 마이크로프로세서에서 실행되도록 개발되었기 때문.

– 장점 : 한 번 컴파일된 바이트 코드는 다른 플랫폼에서 재컴파일 없이 실행할 수 있음.

– 단점 : 바이트 코드를 해석해서 실행할 프로그램 구조가 필요. 직접 기계어 코드 실행시보다 느림

(3) C/C++의 경우 직접 기계어 코드로 변환

(4) 마이크로프로세서는 각각 다른 기계어 코드를 가지고 있기에, 다른 기계어 코드를 생성해야 함

즉, 마이크로프로세서에 맞는 컴파일러를 사용해야 함

위키백과, 우리 모두의 백과사전

컴파일은 여기로 연결됩니다. 일본의 기업에 대해서는 은 여기로 연결됩니다. 일본의 기업에 대해서는 컴파일 (기업) 문서를 참고하십시오.

일반적인 다중 언어, 다중 대상 컴파일러의 동작 모습.

컴파일러(compiler, 순화 용어: 해석기, 번역기)는 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 언어 번역 프로그램을 말한다. 컴파일러는 고급 프로그래밍 언어를 실행 프로그램으로 만들기 위해 저급 프로그래밍 언어(예, 어셈블리 언어, object 코드, machine code)로 바꾸는 데 사용된다. 원래의 문서를 소스 코드 혹은 원시 코드라고 부르고, 출력된 문서를 목적 코드라고 부른다. 목적 코드는 주로 다른 프로그램이나 하드웨어가 처리하기에 용이한 형태로 출력되지만 사람이 읽을 수 있는 문서 파일이나 그림 파일 등으로 옮기는 경우도 있다. 원시 코드에서 목적 코드로 옮기는 과정을 컴파일(compile, 순화 용어: 옮김, 번역, 문화어: 콤파일)이라고 한다.

컴파일러는 소스 프로그램을 읽어서 즉시 결과를 출력하는 인터프리터와는 구분된다. 그러나 현대에 들어 많은 인터프리터가 JIT 컴파일 등의 기술로 실시간 컴파일을 수행하므로, 컴파일러와 인터프리터 사이의 기술적 구분은 사라져 가는 추세이다.

소스 코드를 컴파일하는 이유는 대부분 사람에게 이해하기 쉬운 형태의 고수준 언어로부터 실행가능한 기계어 프로그램을 만들기 위해서이다. 좁은 의미의 컴파일러는 주로 고수준 언어로 쓰인 소스 코드를 저수준 언어(어셈블리어, 기계어 등)로 번역하는 프로그램을 가리킨다.

역사 [ 편집 ]

초기 컴퓨터 프로그램들은 어셈블리어로 작성되었다. 그러나 서로 다른 CPU 아키텍처가 등장할 때마다 매번 똑같은 프로그램을 서로 다른 어셈블리어로 작성하는 비용이 커지면서, 고급 프로그래밍 언어의 필요성이 대두되었다. 그러나 초기 컴퓨터 하드웨어의 메모리 크기가 너무 작아, 컴파일러의 등장에 기술적 장애물이 되었다.

1950년대 초부터 기계어에 독립적인 최초의 고급 프로그래밍 언어가 나타났고, 실험적인 컴파일러들이 등장하기 시작했다. 세계 최초의 컴파일러는 1952년 그레이스 호퍼가 개발한 프로그래밍 언어 A-0를 기계어로 번역하는 컴파일러이다. 컴파일러라는 용어 또한 이때 호퍼가 처음 사용하였다. 최적화 기능이 탑재된 최초의 “완전한” 컴파일러는 1957년 IBM의 존 배커스가 개발한 포트란 컴파일러이다.

원리 [ 편집 ]

컴파일러에서 꼭 지켜야 할 두 가지 조건이 있다. 첫째로, 컴파일러는 옮김의 과정에서 프로그램의 뜻을 보존하여야 한다. 입력받은 프로그램의 의미를 충실히 따라야 한다. 이런 조건이 없다면 컴파일러를 사용하는 사용자가 컴파일러를 믿고 프로그램을 작성할 수도 없고, 잘못된 옮김을 인정한다면 컴파일러를 올바르게 하기 위한 노력을 들일 필요가 없을 것이다. 두 번째로, 실용적인 면에서, 컴파일러는 입력으로 들어온 프로그램을 어떤 면에서든지 개선해야 한다. 예를 들어, 소스 코드를 기계어로 옮긴다면 기계가 이해할 수 없었던 언어를 기계가 이해할 수 있게 개선한 것이 된다. 같은 언어로 옮긴 경우에는 성능이 개선되는 등의 장점이 있어야 한다. 그렇지 않다면 컴파일을 수행할 이유가 없어진다.

컴파일러의 기능:

고급언어를 직접 기계어 코드로 변환한다.

자바의 경우 바이트 코드로 변환한다. 중간단계의 코드를 생성하고 이것을 해석해서 실행한다.

C/C++언어와 같은 고급언어는 직접 기계어 코드로 변환한다. 마이크로프로세서는 각각 다른 기계어 코드를 가지고 있기 때문에 같은 고급언어라도 다른 기계어 코드를 생성해야 한다. 따라서 개발자는 해당 마이크로프로세서에 맞는 컴파일러를 사용해야 한다. 그러나 자바는 다양한 마이크로프로세서에서 실행되도록 하는 철학을 가지고 개발되었기 때문에 바이트 코드를 가지고 해석을 해서 실행하는 방식이다. 장점은 한번 컴파일된 바이트 코드는 다른 플랫폼에서 재컴파일없이 실행할 수 있다. 그러나 단점은 바이트 코드를 해석해서 실행할 프로그램 구조가 필요하고, 직접 기계어 코드를 실행하는 것 보다 속도에서 늦다.

컴파일러의 실행 단계 [ 편집 ]

많은 수의 컴파일러는 다음과 같은 순서를 거쳐 소스 코드를 번역한다. 컴파일러나 프로그래밍 언어의 특성에 따라 일부 단계는 생략되거나 더 세부적인 단계로 나뉠 수도 있다.

구문 분석: 소스 코드 파일을 읽어 개별 문법요소(연산자, 괄호, 식별자 등) 단위로 자른후, 이 문법요소들을 해석하여 추상 구문 트리를 생성한다. 이 과정에서 문법에 맞지 않는 소스 코드는 사용자에게 알려준다.

최적화: 추상 구문 트리를 분석하여 최적화를 수행한다. 도달할 수 없는 코드를 식별하거나, 상수 표현식을 미리 계산해 두거나, 루프 풀기 등의 대부분의 최적화가 이 단계에서 수행된다.

코드 생성: 최적화된 구문 트리로부터 목적 코드를 생성한다. 목표 언어가 기계어일 경우, 레지스터 할당, 연산 순서 바꾸기 등 하드웨어에 맞는 최적화가 이 단계에서 수행된다. 대부분의 하드웨어 최적화 알고리즘은 NP 복잡도를 갖지만, 휴리스틱을 통해 많은 최적화가 수행된다.

링킹: 목적 코드가 기계어일 경우, 여러 라이브러리 목적 코드를 묶어 하나의 실행 파일을 생성하게 된다. 이 과정은 링커에 의해 수행되며, 어떤 사람들은 링커를 컴파일러의 일부로 간주하지 않기도 한다.

분류 [ 편집 ]

컴파일러는 입출력되는 언어의 종류, 내부구조, 목적코드의 동작에 따라 여러 가지로 분류할 수 있다.

목적코드가 실행되는 방법 [ 편집 ]

컴파일러가 실행되는 컴퓨터나 운영체제가 컴파일러의 목적코드가 실행될 컴퓨터나 운영체제와 같은 경우 네이티브 컴파일러(native compiler 또는 hosted compiler)라고 한다.

네이티브 컴파일러 예:

마이크로소프트 윈도우용 응용 프로그램 개발하기 비주얼 스튜디오로 컴파일하면 실행파일(exe 파일) 생성한다.

리눅스용 응용 프로그램 개발하기 위해 x86용 gcc를 사용하면 리눅스 실행파일이 생성된다.

반면에 크로스 컴파일러(cross compiler)는 다른 컴퓨터나 운영체제에서 실행되도록 제작된다. 임베디드 시스템 등 소프트웨어 개발에 충분한 환경을 갖추지 못한 환경에서 동작할 프로그램을 만들기 위해 사용된다.

크로스 컴파일러 예 :

리눅스(x86)에서 ARM용 임베디드 시스템용 프로그램이나 커널을 개발하기 위해 ARM용 gcc을 사용하면 ARM 코드의 실행파일이 생성된다.

마이크로소프트 윈도에서 8051, AVR, PIC등의 시스템 프로그램을 개발하기 위해 해당 컴파일러를 사용하면 해당 CPU의 코드가 생성된다.

자바 [ 편집 ]

또한 가상 머신에서 동작할 프로그램을 만드는 컴파일러도 있다. 이 경우 일반적으로 출력물이 가상 머신을 위해 제작된 바이트코드 형태의 기계어가 되므로 바이트코드 컴파일러라고 부른다.

일단 구조와 다단 구조 [ 편집 ]

소스를 한 번 읽고 번역하여 바로 출력물을 내놓는 컴파일러도 있지만 여러 가지 목적을 위해 중간 결과를 만들어 그 결과를 다시 최종 결과로 출력하는 컴파일러도 있다. 중간 결과를 만드는 데는 여러 가지 이유가 있다.

다양한 언어 지원 : 다양한 입력 언어를 동일한 중간 표현으로 표현하거나 동일한 중간 표현을 여러 가지 출력 언어로 표현하면 다양한 입력 언어와 출력 언어를 지원하는 컴파일러를 작성할 수 있다.

속도 및 최적화 : 고수준 언어일수록 최적화된 성능보다는 사람에게 이해하기 쉬운 형태를 염두에 두고 설계된다. 때문에 중간형태를 거치는 것이 보다 저수준에서 효율적으로 프로그램을 최적화한 다음 최종적으로 출력물을 내놓는 데 유리할 수 있다.

저스트 인 타임 컴파일 (JIT 컴파일) : 스몰토크, 자바, 마이크로소프트 공통 중간 언어(CIL) 등의 컴파일러는 가상 머신의 바이트코드를 출력한다. 그러나 가상 머신은 플랫폼의 기계어에 비해 속도가 느릴 수밖에 없으므로 이들 가상 머신에는 저스트 인 타임 컴파일러가 탑재되어 실행 직전에 현재 플랫폼의 기계어로 다시 한 번 컴파일되어 속도를 향상시킨다.

참고 자료 [ 편집 ]

Cooper, Keith D. & Linda Torczon, Engineering a compiler, Morgan Kaufmann, 2004, pp 1-8.

외부 링크 [ 편집 ]

So you have finished reading the 컴파일러 란 topic article, if you find this article useful, please share it. Thank you very much. See more: 컴파일러 원리, c++ 컴파일러란, 컴파일러 종류, 컴파일러 역할, 소스코드 컴파일, 컴파일러 인터프리터 차이, 컴파일 링 뜻, 컴파일러 방식

Leave a Comment