After the assembly language is created it is necessary to determine how to represent each instruction as a number. |
어셈블리 언어를 작성하고 나면, 각 명령어를 숫자로 어떻게 표현할지 결정해야 한다. |
This establishes a one-to-one correspondence between each instruction in the assembly language and each instruction code in the set of instruction codes. |
이로써, 어셈블리 언어의 각 명령과, 명령 코드 세트의 각 명령 코드간 일대일 대응이 이뤄진다. |
Converting a program from assembly language to instruction codes is called assembling, and conversion from instruction codes back into assembly language is called disassembling. |
어셈블리 언어로 작성된 프로그램을 명령 코드로 변환하는 것을 어셈블링이라 하며, 반대로 명령 코드에서 어셈블리 언어로 변환하는 것은 디스어셈블링이라 한다. |
Several choices we must make at this point are: |
여기서, 몇 가지 선택해야 할 것이 있는데, 이는 아래와 같다. |
What number is used to represent each assembly language instruction? |
각 어셈블리 언어 명령을 표현하는 데에 어떤 숫자가 사용되고 있는가? |
How are instruction operands encoded? |
명령어의 피연산함수는 어떤 방식으로 부호화되는가? |
Are operands part of the instruction word (remember, by word I mean number), or are they separate words (numbers)? |
피연산함수는 명령 워드(여기서, 워드는 숫자를 의미함을 기억할 것)의 일부인가, 아니면 별도의 워드(숫자)인가? |
First, to answer the last question, since there are only small numbers of instructions and registers in this VM it should not be very difficult to encode all operands in a single instruction word, even if (for the sake of simplicity) I were to use a 16-bit instruction word. |
먼저, 마지막 질문에 답해 본다면, 이 VM에는 명령어와 레지스터가 단지 몇 개 밖에 안되기 때문에, 모든 피연산함수를 한 개의 명령 워드로 부호화하는 것은 16비트 명령 워드를 사용하는 경우(간단하게 하기
위해)라 하더라도 그리 어렵지 않다. |
Thus, a 16-bit number written in hexadecimal has 4 digits, giving us easy access to 4 information fields, each containing 16 variations (0-9 and A-F). |
따라서, 16진수로 작성된 16비트 수에는 4개의 숫자가 들어 있으므로, 4 개의 정보 필드에 쉽게 접근할 수 있는데, 이들 각 필드에는 16 가지의 변화값(0-9 및 A-F)을 쓸 수 있다. |
The first digit of a machine word will be the instruction number. |
기계어의 첫 번째 숫자는 명령을 나타내는 숫자이다. |
This gives our VM the potential for having up to 16 different instructions. |
이와 같이, VM에서는 16 개의 서로 다른 명령을 사용할 수 있게 된다. |
This is a small amount by contemporary standards, but it is plenty for our example virtual machine. |
최근 표준에 비춰볼 때는 이것이 작은 량이지만, 여기 우리가 예로든 가상 기계에서는 아주 많은 량이다. |
The next three digits will be used for the operands. |
나머지 3 개의 숫자는 피연산함수용으로 사용한다. |
These can be used as three 1-digit operands, two operands of 1 and 2 digits, or a single 3-digit operand. |
이들 숫자는 1-숫자 피연산함수 3 개, 1-숫자 및 2-숫자로 구성되는 피연삼함수 2 개, 또는 3-숫자 피연산함수 1 개로 사용할 수 있다. |
Having made these decisions, let us now establish the encoding. |
이들을 결정했으므로, 이제 부호화를 시작해보자. |
Recall that we have 16 instruction numbers available. |
우리가 쓸 수 있는 명령 숫자는 16 개가 있음을 기억하자. |
The halt instruction will be instruction 0, and there is an important reason for choosing 0 for this instruction. |
중지(halt) 명령으로는 0을 쓰는데, 여기에 0을 선택한
데에는 중요한 이유가 있다. |
Since empty space in the computer's memory will most likely be filled with 0s, any run-away program will eventually encounter a 0 and attempt to execute this instruction, immediately halting the program. |
컴퓨터 메모리 내의 빈 공간에는 0으로 채워져 있을 가능성이 크므로, 어느 run-away 프로그램에서든 결국 0을 만나게 되면, 이 명령을 실행하여 프로그램을 즉시 중지하게 된다. |