바이너리 시퀀스로 작성된 프로그램을 "기계어 프로그램"이라고 하며, 이는 컴퓨터가 직접 인식하고 실행할 수 있는 유일한 저수준 언어입니다. 기계어는 문자열인 바이너리 코드 명령어로 직접 표현되는 컴퓨터 언어입니다. 코드인 64개의 0과 1은 다양한 순열과 조합으로 구성될 수 있으며, 전선을 통해 전기적 신호로 바뀌어 컴퓨터가 다양한 작업을 수행할 수 있습니다.
이 튜토리얼의 운영 환경: Windows 10 시스템, DELL G3 컴퓨터.
바이너리 시퀀스로 작성된 프로그램을 기계어 프로그램이라고 합니다. 컴퓨터가 직접 인식하고 실행할 수 있는 유일한 저수준 언어입니다.
기계어는 이진 코드 명령어로 직접 표현되는 컴퓨터 언어입니다. 명령어는 0과 1로 구성된 코드 문자열입니다. 명령어는 특정 자릿수를 가지며 각 세그먼트의 인코딩은 서로 다릅니다. 특정 컴퓨터의 단어 길이는 64비트(bit)입니다. 즉, 명령어나 기타 정보를 구성하는 64개의 이진수가 있습니다. 64 0과 1은 다양한 순열과 조합으로 형성될 수 있으며, 전선을 통해 전기적 신호로 바뀌어 컴퓨터가 다양한 작업을 수행할 수 있습니다.
기계어는 컴퓨터 하드웨어에서 직접 인식할 수 있는 명령어의 집합을 말합니다. 기계어는 하드웨어 장치에 종속됩니다. 컴퓨터 장치마다 기계어가 다르므로 기계어는 기계 지향 언어입니다.
컴퓨터 명령어 시스템의 명령어는 "0"과 "1"이라는 두 개의 기호로 구성된 코드로, 기계가 직접 이해하고 실행할 수 있는 명령어입니다. 컴퓨터의 기계어 명령어 집합은 컴퓨터의 기계어, 즉 컴퓨터가 직접 받아들이고 이해할 수 있는 언어를 구성합니다.
기계어에 대한 간략한 소개
프로그래밍 언어는 컴퓨터 프로그램을 정의하고 컴퓨터에 명령을 내리는 데 사용되는 공식 언어입니다. 컴퓨터 언어는 다양하며, 매년 수많은 새로운 프로그래밍 언어가 만들어지고 있습니다. 프로그래밍 언어는 수준에 따라 기계어, 어셈블리 언어, 고급 언어의 세 가지 범주로 나눌 수 있습니다. 기계어는 기계가 직접 실행할 수 있는 기계 명령어 세트로 구성됩니다. 기계어로 작성된 프로그램은 읽고 기억하기 어려운 문제를 안고 있습니다. 본질적으로 어셈블리 언어는 니모닉을 사용하기 때문에 기계어보다 쓰기와 읽기가 더 편리합니다. 고급 언어에서는 여러 개의 어셈블러 문을 보다 간결한 프로그래밍 문으로 병합하는 동시에 스택 및 레지스터 할당 관리와 같은 일부 작업이 자동으로 완료되므로 프로그래머가 프로그램을 개발하는 것이 더 편리해집니다.
기계어는 컴퓨터가 직접 인식하고 실행할 수 있는 바이너리 코드로 표현된 기계 명령어 집합입니다. 컴퓨터 설계자가 컴퓨터의 하드웨어 구조를 통해 컴퓨터에 부여한 작동 기능입니다. 기계어는 유연성, 직접 실행, 빠른 속도라는 특징을 가지고 있습니다. 서로 다른 유형의 컴퓨터의 기계어는 호환되지 않습니다. 한 유형의 컴퓨터의 기계어 명령에 따라 컴파일된 프로그램은 다른 유형의 컴퓨터에서 실행될 수 없습니다.
명령어는 의미 있는 바이너리 코드의 집합입니다. 명령어의 기본 형식은 연산 코드 필드와 주소 코드 필드로, 명령어의 연산 성격과 기능을 지정합니다. , 그리고 주소 코드는 피연산자 또는 피연산자의 주소를 제공합니다.
기계어로 프로그램을 작성하려면 프로그래머는 먼저 사용하는 컴퓨터의 모든 명령어 코드와 그 코드의 의미를 외워야 합니다. 수동 프로그래밍을 할 때 프로그래머는 각 명령어와 데이터의 저장 할당과 입력 및 출력을 스스로 처리해야 하며 프로그래밍 프로세스의 각 단계에서 사용되는 작업 단위의 상태도 기억해야 합니다. 이것은 매우 지루한 작업입니다. 프로그램을 작성하는 데 걸리는 시간은 실제 실행 시간보다 수십 배, 수백 배 더 긴 경우가 많습니다. 게다가 컴파일된 프로그램은 모두 0과 1의 명령어 코드로 직관적이지 않고 오류가 발생하기 쉽습니다. 컴퓨터 제조업체의 전문가를 제외하고 대다수의 프로그래머는 더 이상 기계어를 배우지 않습니다.
명령 형식
기계어 명령어는 opcode와 피연산자의 두 부분으로 구성된 이진 코드입니다. opcode는 명령어의 작동을 지정하며 명령어의 키워드이며 기본값으로 설정할 수 없습니다. 피연산자는 명령어의 피연산자를 나타냅니다. [2] 컴퓨터의 명령어 형식은 기계의 단어 길이, 메모리 용량, 명령어 기능과 밀접한 관계가 있습니다. 프로그램 설계를 용이하게 하고 기본 작업의 병렬성을 높이며 명령어 기능을 향상시키는 관점에서 명령어에는 다양한 정보가 포함되어야 합니다. 그러나 일부 명령어에서는 정보의 일부가 쓸모가 없기 때문에 명령어가 차지하는 저장 공간을 낭비하고 메모리 액세스 횟수가 증가하여 실제로 속도에 영향을 미칠 수 있습니다. 따라서 명령어가 충분한 정보를 제공할 수 있을 뿐만 아니라 그 길이가 기계의 단어 길이와 최대한 일치하도록 명령어 형식을 합리적이고 과학적으로 설계하는 방법을 통해 저장 공간을 절약하고 가치 시간을 단축할 수 있습니다. , 기계의 성능을 향상시키는 것은 명령어 형식 설계에서 중요한 문제입니다.
컴퓨터는 명령을 실행하여 다양한 데이터를 처리합니다. 데이터 소스, 작업 결과의 대상 및 수행된 작업을 나타내기 위해 명령에는 다음 정보가 포함되어야 합니다.
(1) opcode. 이는 작업의 성격과 기능을 지정합니다. 컴퓨터에는 수십에서 수백 개의 명령어가 있을 수 있으며 각 명령어에는 해당 연산 코드가 있으며 컴퓨터는 연산 코드를 인식하여 다양한 작업을 완료합니다.
(2) 피연산자의 주소입니다. CPU는 이 주소를 통해 필요한 피연산자를 얻을 수 있습니다.
(3) 연산 결과의 저장 주소입니다. 피연산자 처리 결과는 재사용을 위해 이 주소에 저장됩니다.
(4) 다음 명령의 주소입니다. 프로그램을 실행할 때 대부분의 명령어는 순서대로 메인 메모리에서 가져와 실행됩니다. 전송 명령어를 만나면 프로그램의 실행 순서가 변경됩니다. 명령어 길이를 압축하기 위해 프로그램 카운터(ProgramCounter, PC)를 사용하여 명령어 주소를 저장할 수 있습니다. 명령어가 실행될 때마다 PC의 명령어 주소는 자동으로 +1(명령어가 하나의 주 메모리 장치만 점유한다고 가정)되어 실행될 다음 명령어의 주소를 나타냅니다. 전송 명령이 발생하면 전송 주소를 사용하여 PC의 내용을 수정합니다. PC를 사용하기 때문에 다음에 실행될 명령어의 주소를 명령어에 명시적으로 지정할 필요가 없습니다.
명령에는 실제로 작업 코드와 주소 코드라는 두 가지 정보가 포함됩니다. 연산 코드(OperationCode, OP)는 명령어(예: 덧셈, 뺄셈, 곱셈, 나눗셈, 데이터 전송 등)에 의해 완료되는 연산을 나타내는 데 사용됩니다. 그 길이는 명령어 시스템의 명령어 수에 따라 다릅니다. . 주소 코드는 명령어의 피연산자를 설명하는 데 사용됩니다. 피연산자를 직접 제공하거나 피연산자의 메모리 주소 또는 레지스터 주소(즉, 레지스터 이름)를 나타냅니다.
명령에는 opcode 필드와 주소 필드의 두 부분이 포함됩니다. 주소 필드에 포함된 주소의 개수에 따라 일반적인 명령어 형식은 다음과 같습니다.
3개 주소 명령어: 일반 주소 필드의 A1과 A2는 각각 첫 번째와 두 번째 피연산자 주소를 결정하고 A3은 결과 주소를 결정합니다. 다음 명령어의 주소는 일반적으로 프로그램 카운터에 의해 순차적으로 제공됩니다.
2주소 명령어: 주소 필드의 A1은 첫 번째 피연산자 주소를 결정하고 A2는 두 번째 피연산자 주소와 결과 주소를 동시에 결정합니다.
단일 주소 명령어: 주소 필드의 A는 첫 번째 피연산자의 주소를 결정합니다. 두 번째 피연산자와 연산 결과를 저장하기 위한 특정 레지스터의 사용을 수정했습니다. 따라서 해당 주소는 지침에 암시되어 있습니다.
제로 주소 명령어: 스택 컴퓨터에서 피연산자는 일반적으로 푸시다운 스택 상단의 두 유닛에 저장되고 결과는 스택 상단에 배치되므로 주소는 암시적입니다. 대부분의 명령어에는 opcode만 있고 주소 도메인은 없습니다.
가변 주소 번호 지침: 주소 필드에 포함된 주소 개수는 연산 정의에 따라 변경됩니다. 예를 들어 일부 컴퓨터의 명령어에 포함된 주소 수는 적게는 0에서 많게는 6까지 가능합니다.
더 많은 관련 지식은 FAQ 칼럼을 방문해주세요!
위 내용은 바이너리 시퀀스로 작성된 프로그램을 무엇이라고 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!