Машинный код в LC-3 также известен как сборка? - PullRequest
1 голос
/ 25 декабря 2009

Я немного растерялся из-за концепции машинного кода ... Является ли машинный код синонимом ассемблера? Каким будет пример машинного кода в LC-3?

Ответы [ 3 ]

3 голосов
/ 25 декабря 2009

Инструкции по сборке (LD, ST, ADD и т. Д. В случае симулятора LC-3) соответствуют двоичным инструкциям, которые загружаются и выполняются как программа. В случае LC-3 эти «коды операций» собраны в 16-битные строки 1 и 0, которые архитектура LC-3 разработана для соответствующего выполнения.

Например, сборка «ADD R4 R4 # 10» соответствует «машинному коду» LC-3:

0001100100101010

Который может быть разбит на:

0001 - ADD.
100 - 4 in binary
100 - 4 in binary
10 - indicates that we are adding a value to a register
1010 - 10 in binary

Обратите внимание, что каждый код операции имеет отдельный двоичный эквивалент, поэтому существует 2 ^ 4 = 16 возможных кодов операции.

LC-3 ловко решает эту проблему, вводя эти биты флага в определенные инструкции. Для ADD эти два бита меняются в зависимости от того, что мы добавляем. Например, если мы добавляем два регистра (т. Е. «ADD R4 R4 R7» в отличие от регистра и значения), биты будут установлены в 01 вместо 10.

Этот машинный код инструктирует LC-3 добавить десятичное число 10 к значению в регистре 4 и сохранить результат в регистре 4.

3 голосов
/ 25 декабря 2009

«Язык ассемблера» - это символический (читаемый человеком) язык, который программа, известная как «ассемблер», переводит в двоичную форму, «машинный код», который ЦПУ может загружать и выполнять. В LC-3 каждая инструкция в машинном коде является 16-битным словом, в то время как соответствующая инструкция на языке ассемблера является строкой читабельного текста (другие архитектуры могут иметь более длинные или более короткие инструкции машинного кода, но общая концепция это то же самое).

0 голосов
/ 25 декабря 2009

Вышесказанное относится к любому языку высокого уровня (например, C, Pascal или Basic). Разница между HLL и сборкой заключается в том, что каждая инструкция на языке ассемблера соответствует одной машинной операции (кроме макросов). Между тем, в HLL один оператор может компилироваться в целый машинный код.

Можно сказать, что сборка - это тонкий слой мнемоники поверх машинного кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...