Код: Выделить всё
std::string Instruction::TranslateToMachineCode() {
// Implement the translation logic here
// This function should return the machine code corresponding to the instruction
// For example, if the instruction is "LOAD", the machine code might be "0001"
// You need to define the translation rules for each instruction
// and implement them accordingly
}
Ниже приводится краткое описание языка ассемблера для VC8000. В классе мы обсудим обоснование сделанного здесь выбора.
Формат оператора:
Оператор на языке ассемблера состоит из от одного до четырех полей. Это:
- Ярлык — используется для ссылки на оператор. Это необязательно.
- Код операции — символическое имя для числового кода операции машинного языка.
- Операнд1 — это номер регистра для машины. языковой эквивалент или константа для инструкции ассемблеру. (См. далее в этом документе)
- Операнд2 — используется как метка (адрес) или регистр. Для инструкций, которые передают информацию ассемблеру, это не будет использоваться.
Метки начинаются со столбца 1, все остальные поля отделяются пробелами и/или табуляцией и/или запятыми. Метка будет использоваться вместо числового адреса для указания местоположения инструкции или памяти.
Это имя для кода операции различного машинного языка.
Код: Выделить всё
01 ADD 02 SUB 03 MULT 04 DIV 05 LOAD
06 STORE 07 ADDR 08 SUBR 09 MULTR 10 DIVR
11 READ 12 WRITE 13 B 14 BM 15 BZ
16 BP 17 HALT
Адреса:
Адрес должен быть указан меткой. Числовые адреса не допускаются.
Инструкции на языке ассемблера:
[*]DC — определение константы. Константа представляет собой десятичное целое число, помещаемое в поле операнда.
[*]DS — определяет хранилище. Операнд определяет количество слов памяти, которые будут выделены.
[*]ORG – определяет происхождение. Операнд указывает адрес, по которому будет сгенерирована трансляция следующей инструкции,
[*]END – указывает, что дополнительных операторов для трансляции нет.
Комментарии:
Данные после ";" это комментарий. Комментарии могут появляться где угодно внутри инструкции или сами по себе. Пустые строки игнорируются.
Учет регистра
Все символы будут чувствительны к регистру. Коды операций могут быть записаны в верхнем или нижнем регистре или в некоторой их комбинации. Поэтому они нечувствительны к регистру.
Компьютер VC8000
VC8000 — это десятичный компьютер с памятью на 1 000 000 слов. Каждое слово состоит из 9 десятичных цифр. Есть дополнительные 10 слов памяти, называемые регистрами. Это встроенная память. Инструкции машинного языка для VC8000 имеют следующую форму. Примечание: каждая из них имеет одинаковое количество цифр.
|2 цифры | 1 цифра |6 цифр |
|код операции | номер регистра |часть адреса|
или
|2 цифры | 1 цифра | 1 цифра | 5 цифр |
|код операции | номер регистрации |номер регистрации| не используется |
Программа на машинном языке — это последовательность инструкций машинного языка, хранящаяся в памяти. Компьютер запускает программу на машинном языке, выполняя машинные инструкции, хранящиеся в последовательных словах памяти. Машина VC8000 предполагает, что первая выполняемая инструкция будет находиться в позиции 100. Ниже приведены инструкции машинного языка для VC8000.
Код: Выделить всё
NAME OP. CODE MEANING
ADD 01 Reg
[code]SUBTRACT 02 Reg
Подробнее здесь: [url]https://stackoverflow.com/questions/78496562/i-need-to-inplement-this-instruction-translation-fuction-but-i-dont-know-how-to[/url]