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 цифры, или одиночным 3-цифровым операндом. |
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 и пытаться выполнить эту команду, что немедленно остановит эту программу. |