명령어

내 할일 잘 하기·2023년 12월 10일
0

CS - 컴퓨터 구조

목록 보기
2/2

컴퓨터는 소스코드를 바로 이해할 수 있을까?
[ Java, C/C++, JS, ETC... ]
그 대답은 NO .

컴퓨터는 '명령어'를 이해한다.

소스코드는, 실행되기 전에 명령어(+데이터)로 변환되어 실행된다.

  • 소스코드 : 사람 (개발자)가 이해하기 편한 언어 - 고급 언어
  • 명령어 / 데이터 : 컴퓨터가 이해하기 편한 언어 - 저급 언어

같은 소스코드일지라도, CPU / 컴파일러의 종류에 따라 저급언어는 달라질 수 있다.

저급 언어

저급 언어는 아래의 2가지 종류가 있다.

  1. 기계어 ( machine code )
    컴퓨터가 직접 이해하는 언어. 16진수 - 2진수

  2. 어셈블리어 ( assembly language )
    기계어를 사람이 '조금'은 읽기 편하도록 변환시킨 언어. CPU가 어떠한 동작을 하는지에 대해 이해할 수 있는 언어이다.

다만, 사실상 컴퓨터가 이해하는 근원적인 언어는 기계어라는 점을 인지하자.


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

대표적인 2가지 방식은 아래의 컴파일 및 인터프리트 방식이다.

  1. 컴파일
    소스 코드 전체가 컴파일러에 의해 검사 및 목적 코드(Object code, 저급 언어)로 변환
  • 오류가 있는 경우, 컴파일 에러 > 아예 작동하지 않음
  • C/C++, Rust
  • 컴파일러의 종류 : gcc, clang, Visual Studio, ETC...
  1. 인터프리트
    소스코드 한 줄씩, 인터프리터에 의해서 검사 및 목적 코드로 변환
  • 소스코드를 한 줄, 한 줄씩 읽기 때문에 컴파일 방식에 비해 성능면에서 뒤쳐진다고 알려져 있음.
  • n번째 줄에 오류가 있는 경우, n-1번 줄까지는 정상적으로 실행된다.
  • 컴파일 언어읱 특성과 인터프리트 언어의 특성을 모두 갖춘 JAVA와 같은 언어도 있다.
  • 이외의 방식들도 많이 있다는 점은 알아둘 것.

'소스코드 >> 명령어'를 직접 관찰해볼 수 있는 사이트 링크 (https://godbolt.org)

profile
함께 일하고싶은 개발자로 기억될래요

0개의 댓글