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. |
Во-первых, чтобы ответить на последний вопрос, поскольку в этой виртуальной машине имеется только небольшое количество инструкций и регистров, не должно быть очень сложно кодировать все операнды в одном командном слове, даже если (для простоты) я должен был использовать 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-разрядное число, записанное в шестнадцатеричном формате, имеет 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. |
Это дает нашей ВМ возможность иметь до 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. |
Следующие три цифры будут использоваться для операндов. |
These can be used as three 1-digit operands, two operands of 1 and 2 digits, or a single 3-digit operand. |
Они могут использоваться в качестве трех однозначных операндов, двух операндов из 1 и 2 цифр или одного трехзначного операнда. |
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. |
Инструкция останова будет инструкцией 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 и попытается выполнить эту инструкцию, немедленно остановив программу. |