CS

[CS] 명령어 변환방식 : 컴파일, 인터프리터

chandlerxx 2024. 4. 11. 21:04

컴퓨터가 이해할 수 있는 정보는 두가지.

항상 강조 드립니다.

  • `데이터`
  • `명령어`

 

왜 명령어를 알아야 하는가?

개발자가 작성한 소스코드가 명령어로 변환되어, 컴퓨터가 이를 인식하고 동작하기 때문입니다.

 

 

고급언어 vs 저급언어  

  • 고급 언어 : 사람이 이해하고 작성하기 쉽게 만들어진 언어 (소스코드로 복잡한 프로그램 구현 가능)
  • 저급 언어 : 컴퓨터가 이해하고 실행할 수 있는 언어
    • 기계어 : 이진수(0,1) 또는 십육진수(0~9, A~F)로 구성가능 → 한눈에 이해하기 어렵다!
    • 어셈블리어 ★ : 기계어를 읽기 편한 형태로 번역한 언어 

 

예시를 통해 기계어와 어셈블리어를 살펴보겠습니다.

기계어 어셈블리어
10110000 01100001 mov al, 061h

 

mov : move 

al : CPU안에 있는 변수를 저장하는 레지스터

061h : 16진수 61 를 뜻함 

→ 16진수 61을 al레지스터에 넣어라! 라는 뜻으로, 읽기 편한 형태의 언어가 되는 것이죠.

 

 

어떻게 명령어로 변환이 될까? (고급언어 → 저급언어)

  • 컴파일 방식 : 컴파일러에 의해 소스코드 전체가 저급언어로 변환되어 실행
    • 컴파일 과정에서 에러가 하나라도 발생시, `컴파일 에러` 발생하며 종료 (에러 해결전까지 정상 동작 수행 불가) 
    • 예시 : 자바 실행시 JVM 내부 컴파일러에 의해 소스코드(.java) → 바이트코드(.class) 
  • 인터프리터 방식 : 컴파일 과정없이, Line by Line으로 저급언어로 변환하며 실행
    • 대표적으로 Python이 있고, N번째 줄에 에러 발생시 N-1번째 줄까지는 정상 작동함 
    • 컴파일 과정이 없어서, 컴파일되는 시간을 기다릴 필요가 없음

 

출처

교보문고 혼공컴운