본문 바로가기
프로그래밍/IT지식

[개발용어] 기계어, 어셈블리어, 고급언어

by 준보틱스 2024. 6. 23.

기계어

기계어는 CPU가 직접 해독하고 실행할 수 있는 비트 단위로 쓰인 컴퓨터 언어를 통틀어 일컫는다. 기계어는 프로그램을 나타내는 가장 낮은 단계의 개념이다.
출처 : 위키백과

 

기계어는 쉽게 말해 컴퓨터의 언어이다. CPU가 별 다른 컴파일 없이 직접 해독하고 실행할 수 있는 0과 1로 이루어진 비트 단위의 언어이다. 여기서 0과 1은 엄밀히 따지면 숫자(데이터)는 아니다. 있다, 없다 그리고 양극과 음극 정도의 개념이다.

기계어는 CPU가 해독할 수 있는 유일한 언어이기 때문에 모든 프로그래밍 언어는 결국 기계어로 번역이 되어 CPU에게 전달된다.

위와 같은 기계어는 가독성이 현저히 떨어져 보통의 사람들에게는 단순히 0과 1의 반복된 난해한 언어로 보인다. 따라서 기계어로 프로그래밍을 짜는 사람은 거의 없을 것이다.

어셈블리어

어셈블리어는 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어이다.
출처 : 위키백과

 

어셈블리어 또는 어셈블리 언어는 기계어와 1:1 대응이 되는 컴퓨터 프로그래밍의 저급 언어이다. 어셈블리어는 복잡하고도 난해한 0과 1의 나열된 언어인 기계어를 알파벳으로 변환한 것이다.

그렇기 때문에 어셈블리어는 기계어보다 더 가독성이 뛰어나기 때문에 어셈블리어로 프로그래밍을 하게 되면 기계어로 프로그래밍하는 것보다는 더 생산성 좋은 개발을 할 수 있게 된다. 예를 들어 전자레인지, 세탁기 등등 임베디드 개발에는 어셈블리어가 사용되어진다.

컴퓨터 구조에 따라 사용하는 기계어가 달라지며, 따라서 기계어는 대응되어 만들어지는 어셈블리어도 각각 다르게 된다.

※ 어셈블러

어셈블러는 어셈블리어를 기계어 형태의 오브젝트 코드로 해석해 주는 컴퓨터 언어 번역 프로그램을 말한다. 어셈블러는 기본 컴퓨터 명령어들을, 컴퓨터 프로세서가 기본 연산을 수행하는데 사용할 수 있는 비트 패턴으로 변환시키는 프로그램이다.

즉, 어셈블리어로 작성한 프로그램은 어셈블러를 통해 오브젝트 코드(기계어)로 변환하는 과정(어셈블)을 거쳐야 한다.

대부분의 프로그램을 개발할 때 어셈블리어로 작성하는 것은 비효율적이기 때문에 실제로는 C, C++와 같은 고수준 언어로 작성하고 이를 변환하는 프로그램, 즉 컴파일러를 통해 생성하게 된다. 실제로 어셈블리어로 코딩을 하는 경우는 장치 드라이버나 임베디드 시스템을 만드는 경우 등 한정적이다.

또한 어셈블러라는 것은 기계어와 대응되는 만큼 기계마다 동일하지 않다. 대체로 유사하지만 같은 코드를 다양한 기계에서 사용할 수 없다.

하지만 어셈블리어는 기계어와 가깝기 때문에 파이썬이나 자바 스크립트와 같은 고수준 프로그래밍 언어에서는 배울 수 없는 다양한 것들을 경험할 수 있다.

2015년 이후 어셈블리어의 점유율이 급상승하고 있다. 사물인터넷에 쓰이는 연산력 자원이 적은 초소형 기기의 수요가 전세계적으로 크게 증가하고 있기 때문이다. 어셈블리어는 C 등 다른 언어에 비해 높은 수준의 프로그램 최적화가 가능하며, 하드웨어 제어를 위해 특정한 기계어 명령을 수행하거나 레지스터, 메모리 번지에 직접 접근하기 쉽기 때문에 전력이나 메모리 사용량 등에서 민감하며 특정 기능을 위해 별도의 하드웨어 모듈을 이용하는 경우도 많은 초소형 임베디드 시스템에 유용하다.

고급언어와 저급언어

  고급언어 저급언어
차이점
  • 사람이 이해하기 쉬움
  • 컴파일 or 인터프리터 변환과정을 한번 거쳐야 하기에 다소 느림
  • 크기가 크다
  • 다루기 쉬움
  • 실행환경(컴퓨터 사양, 운영체제 등)에 저급언어에 비해 독립적
  • 컴퓨터가 이해하기 쉬움
  • 실행속도가 빠름
  • 고급언어에 비해 크기가 작음
  • 다루기 어려움
  • 실행환경(컴퓨터 사양, 운영체제 등) 따라 프로그램을 달리 해야함
사용언어 C, 파이썬, 자바 등 대부분 프로그래밍 언어 기계어, 어셈블리어

 

  • 고급언어

고급언어는 사람의 언어에 가까운 언어다. 예를 들어 C, C++, Java 등 일반적으로 알고 있는 프로그래밍 언어를 말한다. 고급언어는 저급언어보다 가독성이 좋다.

또한 고급언어는 저급언어와 다르게 특정 컴퓨터와 관계없이 독립적으로 프로그램을 만들 수 있다. 고급언어를 컴퓨터 언어인 기계어로 변환하기 위해 컴파일러와 인터프리터 등이 있다. 기계어로 변환되는 동안 시간이 소요되며 저급언어보다 프로그램 크기가 더 크다.

  • 저급언어

기계어에 가까운 언어로 이진법으로 이루어진 언어다. 예를 들어 기계어와 어셈블리어가 저급언어에 해당된다. 저급언어가 기계어에 가까운 언어이고 컴파일과 같은 번역이 필요하지 않아 고급언어로 작성한 프로그램보다 빠른 편이다. 프로그램 크기 또한 고급언어보다 작다.

저급 언어에 비해 고급 언어가 갖는 주요 장점은 프로그램을 작성하거나, 작성된 프로그램을 이해하고, 유지 보수하기가 쉽다. 그러나 단점으로는, 고급언어로 작성된 프로그램들이 실행되려면 반드시 컴파일러나 인터프리터 등을 이용하여 기계어로 번역되어야 한다는 것이다.