logo

기계 언어란 무엇입니까?

기계어는 컴퓨터가 이해할 수 있는 이진수나 비트로 구성된 저수준 언어입니다. 기계어 코드 또는 객체 코드라고도 하며 이해하기가 매우 어렵습니다. 컴퓨터가 이해하는 유일한 언어는 기계어입니다. Swift 및 C++와 같은 모든 프로그램과 프로그래밍 언어는 컴퓨터에서 실행되기 전에 기계어로 프로그램을 생성하거나 실행합니다. 특정 작업, 심지어 가장 작은 프로세스가 실행되면 기계어가 시스템 프로세서로 전송됩니다. 컴퓨터는 디지털 장치이기 때문에 이진 데이터만 이해할 수 있습니다.

기계어란 무엇인가

컴퓨터에서는 비디오, 프로그램, 사진과 같은 모든 데이터가 바이너리로 표시됩니다. CPU는 이 기계어 코드나 바이너리 데이터를 입력으로 처리합니다. 그런 다음 애플리케이션이나 운영 체제는 CPU에서 결과 출력을 가져와 시각적으로 표시합니다. 예를 들어 ASCII 코드 01000001은 기계어로 'A'라는 문자를 나타내지만 화면에서는 'A'로 표시됩니다.

서로 다른 프로세서 아키텍처에서는 서로 다른 기계어 코드가 사용됩니다. 그러나 기계어에는 1과 0이 포함됩니다. 예를 들어, CISC 아키텍처를 포함하는 Intel x86 프로세서와 비교할 때 PowerPC 프로세서에는 RISC 아키텍처를 포함하는 다른 코드가 필요합니다. 올바른 프로세서 아키텍처의 경우, 프로그램을 올바르게 실행하려면 컴파일러가 높은 수준의 소스 코드를 컴파일해야 합니다.

프로그램이나 액션의 경우 정확한 기계어는 운영 체제에 따라 다를 수 있으며, 이는 컴파일러가 액션을 기계어로 작성하는 방법을 설명합니다. 마찬가지로 사진에는 각 픽셀의 색상을 결정하는 수만 개가 넘는 이진 데이터가 있습니다.

컴퓨터 프로그램은 하나 이상의 프로그래밍 언어(예: Java, C++ 또는 Visual Basic)로 작성됩니다. 컴퓨터 프로그램을 만드는 데 사용되는 프로그래밍 언어는 컴퓨터가 직접 이해할 수 없기 때문에 프로그램 코드는 컴퓨터가 이해할 수 있도록 컴파일되어야 합니다. 프로그램의 코드가 컴파일되면 다음으로 변환됩니다.

 01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100 

기계어는 컴퓨터가 이해할 수 있도록 하는 것입니다.

기계어의 예

텍스트 ' 안녕하세요 세계 '는 기계어로 작성됩니다.

아래에는 기계어의 또 다른 예가 있는데, 화면에 문자 'A'를 1000번 표시합니다.

 169 1 160 0 153 0 128 153 0 129 153 130 153 0 131 200 208 241 96 

기계어 실행

모든 프로세서 제품군은 특별히 프로그래밍된 일련의 명령어를 따르며 이러한 명령어는 기계어 코드로 배치됩니다. 작동 가능한 모든 사소한 구성 요소, 즉 기계의 전체 기능을 구성하는 구성 요소는 기본 장치의 특정 배열에 의해 결정됩니다. 모든 기본 정보 단위는 '1' 또는 '0' 중 하나 또는 두 개의 값을 갖는 이진수로 표시됩니다. 각 프로세서 클래스에는 고유한 명령어 세트에 맞는 구조적 구성이 필요하기 때문에 모든 기계 코드 구성의 기본 명령어 세트는 유사하게 일치하는 프로세서 클래스에 연결됩니다.

기계 언어의 사용

기계어의 일반적인 용도는 아래에 설명되어 있습니다.

  • 기계어는 기계가 이해하지만 인간이 어셈블러를 사용하여 해독할 수 있는 저수준 언어입니다.
  • 컴파일러는 기계어를 사람이 이해할 수 있는 다른 코드나 언어로 변환하므로 사람과 컴퓨터 사이에서 중요한 역할을 합니다.
  • 어셈블리 언어는 기계어를 모방한 것이기 때문에 기계어를 이해하는 데 전념합니다.

기계 언어와 어셈블리 언어의 차이점

기계어란 무엇인가

기계 언어와 어셈블리 언어에는 다양한 차이가 있습니다. 아래에는 이들 간의 모든 차이점이 포함된 표가 나와 있습니다.

자바 문자열을 int로
기계 언어 어셈블리어
기계어는 기계만이 읽을 수 있는 이진수나 비트로 구성된 저수준 프로그래밍 언어입니다. 명령어가 CPU에 의해 직접 실행되는 기계 코드 또는 개체 코드라고도 합니다. 어셈블리 언어는 컴퓨터가 이해할 수 없는 인간 전용 언어입니다. 결과적으로 고급 프로그래밍 언어와 기계어 사이의 연결 역할을 하므로 명령어를 기계어 또는 개체 코드로 변환하려면 어셈블러를 사용해야 합니다.
기계어에는 2진수(0과 1), 16진수, 8진수 등이 있는데, 이는 컴퓨터로만 이해할 수 있고 인간은 해독할 수 없습니다. Mov, Add, Sub, End 등과 같은 니모닉은 사람들이 이해하고 활용하고 적용할 수 있는 어셈블리 언어를 구성합니다.
기계어에서는 오류수정이나 수정이 불가능하며, 이에 따라 기계어의 특징이 달라진다. 어셈블리 언어에는 기존 명령어 세트뿐 아니라 오류를 수정하고 프로그램을 수정하는 기능도 있습니다.
기계어는 플랫폼에 따라 다르며 인간이 이해하기가 매우 어렵습니다. 어셈블리 언어의 구문은 영어와 유사합니다. 그러므로 인간이 이해하기 쉽습니다.
기계어는 기억하기 어렵고 기계어의 역할만 하기 때문에 학습이 불가능합니다. 어셈블리 언어는 기억하기 쉬우며 마이크로프로세서 기반의 응용/장치, 실시간 시스템에 사용됩니다.
기계어에서는 모든 데이터가 바이너리 형식으로 존재하므로 실행 속도가 빠릅니다. 기계어에 비해 어셈블리 언어의 실행 속도는 느립니다.
비트 시퀀스는 기계어에서 명령을 내리는 데 사용됩니다. 0은 꺼짐 또는 거짓 상태를 나타내고, 1은 켜짐 또는 참 상태를 나타냅니다. 고급 프로그래밍 언어를 기계어로 변환하는 것은 CPU에 달려 있습니다. 원시 비트 시퀀스를 사용하는 대신 어셈블리 언어는 '기억법' 이름과 기호를 사용합니다. 따라서 사용자는 어셈블리 언어로 연산 코드를 기억할 필요가 없습니다. 어셈블리 언어에서는 인간이 코드를 기계어 코드에 매핑할 수 있으며 코드가 약간 더 읽기 쉽습니다.
1세대 프로그래밍 언어는 번역기가 필요 없는 기계어입니다. 2세대 프로그래밍 언어는 어셈블러를 번역기로 사용하여 니모닉을 기계가 이해할 수 있는 형식으로 변환하는 어셈블리 언어입니다.
기계어는 하드웨어에 따라 다르며 수정을 허용하지 않습니다. 어셈블리 언어는 이식성이 없으며 기계에 종속되어 쉽게 수정할 수 있습니다.
기계어 구문에는 오류가 발생할 확률이 더 높습니다. 기계어에 비해 어셈블리 언어에서는 구문 오류가 발생할 가능성이 적습니다.