Jump to content

Маленький компьютер 3

Little Computer 3 , или LC-3 , — это тип компьютерного образовательного языка программирования , язык ассемблера , который является разновидностью языка программирования низкого уровня .

имеет относительно простой набор инструкций, но может использоваться для написания умеренно сложных ассемблерных программ и является подходящей целью для C. компилятора Он Этот язык менее сложен, чем ассемблер x86 , но имеет множество функций, аналогичных функциям более сложных языков. Эти функции делают его полезным для начального обучения, поэтому его чаще всего используют для преподавания основ программирования и компьютерной архитектуры студентам, изучающим информатику и компьютерную инженерию .

LC-3 был разработан Йелем Н. Паттом из Техасского университета в Остине и Санджаем Дж. Пателем из Университета Иллинойса в Урбане-Шампейне . Спецификацию набора команд, общую архитектуру LC-3 и аппаратную реализацию можно найти во втором издании их учебника. [1] Курсы, основанные на LC-3 и книге Патта и Пателя, предлагаются на многих факультетах компьютерной инженерии и информатики.

Архитектурная спецификация

[ редактировать ]

LC-3 определяет размер слова в своих регистрах 16 бит и использует 16-битную адресуемую память с 2 битами. 16 -адресное пространство местоположения. Файл регистров содержит восемь регистров, обозначенных номерами от R0 до R7. Все регистры являются универсальными, поскольку они могут свободно использоваться любой из инструкций, которые могут записывать в файл регистров, но в некоторых контекстах (например, при переводе из кода C в ассемблер LC-3) некоторые из регистров используется для специальных целей.

Инструкции имеют ширину 16 бит и имеют 4-битные коды операций . Набор команд определяет инструкции для пятнадцати из шестнадцати возможных кодов операций, хотя некоторые инструкции имеют более одного режима работы. Выполнение отдельных инструкций регулируется конечным автоматом управления , реализованным с помощью ПЗУ и блока микросеквенирования.

Архитектура поддерживает использование клавиатуры и монитора для регулирования ввода и вывода; эта поддержка обеспечивается через абстракции ввода-вывода, отображаемые в памяти . При моделировании к этим регистрам можно получить прямой доступ, а их содержимое описывается в архитектурной спецификации. Поддержка ввода-вывода более высокого уровня также обеспечивается за счет использования инструкции TRAP и базовой операционной системы. Операционная система предоставляет функции для чтения и вывода символов с клавиатуры, вывода отдельных символов на монитор, печати целых строк как в упакованной, так и в распакованной форме, а также остановки машины.

Предполагается, что все данные в LC-3 хранятся в двоичном представлении ; нет отдельной поддержки беззнаковой арифметики. Устройства ввода-вывода работают с символами ASCII . LC-3 не имеет встроенной поддержки чисел с плавающей запятой .

Аппаратная реализация, представленная в тексте Патта и Пателя, не является конвейерной или иным образом оптимизированной, но, безусловно, можно создать быструю реализацию, используя более продвинутые концепции компьютерной архитектуры.

Набор инструкций

[ редактировать ]

Набор инструкций LC-3 реализует пятнадцать типов инструкций, шестнадцатый код операции зарезервирован для дальнейшего использования. Архитектура представляет собой архитектуру загрузки и хранения; значения в памяти должны быть перенесены в файл регистров, прежде чем с ними можно будет работать.

Доступные арифметические инструкции включают сложение, побитовое И и побитовое НЕ, причем первые две из них могут использовать как регистры, так и непосредственные значения с расширенным знаком в качестве операндов. Этих операций достаточно для реализации ряда основных арифметических операций, включая вычитание (путем отрицания значений) и побитовый сдвиг влево (с использованием инструкции сложения для умножения значений на два). LC-3 также может реализовать любую поразрядную логическую функцию, поскольку НЕ и И вместе логически завершены .

Доступ к памяти может осуществляться путем вычисления адресов на основе текущего значения программного счетчика (ПК) или регистра в файле регистров; кроме того, LC-3 обеспечивает косвенную загрузку и сохранение, при которых часть данных в памяти используется в качестве адреса для загрузки или сохранения данных. Значения в памяти должны быть перенесены в файл регистров, прежде чем их можно будет использовать как часть арифметической или логической операции.

LC-3 предоставляет как безусловные, так и условные инструкции потока управления. Безусловные переходы могут перемещать выполнение в место, заданное значением регистра или смещением относительно ПК. Три инструкции (JSR, JSRR и TRAP) поддерживают концепцию вызовов подпрограмм, сохраняя адрес кода, вызывающего подпрограмму, в регистр перед изменением значения счетчика программы. LC-3 не поддерживает прямое арифметическое сравнение двух значений. Условные переходы основаны на арифметическом знаке (отрицательном, нулевом или положительном) последней части данных, записанных в файл регистров. Для вычисления разницы двух значений регистра необходимо найти отрицательную эквивалентность одного значения регистра, а затем добавить отрицательное число к положительному значению во втором регистре. Разница двух регистров будет храниться в одном из 8 регистров, доступных пользователю. Знак этого сохраненного значения затем будет использоваться для условного перехода.

Поскольку в наборе инструкций LC-3 не осталось места для выделенных инструкций ввода-вывода с отображением порта , аппаратные реализации обычно резервируют часть карты памяти для ввода-вывода с отображением в памяти . [2]

Поддержка языков программирования

[ редактировать ]

Хотя LC-3 не реализован на физическом чипе, его можно использовать при моделировании в средах Linux/Unix, Mac OS X и Windows. Инструменты моделирования включают ассемблер с поддержкой компьютеризированного вычисления смещения с метками и вставки констант, строк и пустых ячеек памяти в блок ассемблерного кода. Существует также соглашение об использовании языка C на LC-3. Образец ассемблера, компилятора и симулятора предоставлен компанией McGraw-Hill. [1]

Соглашение о вызове функций C в LC-3 аналогично тому, которое реализовано в других системах, таких как x86 ISA. При запуске программ на языке C архитектура поддерживает модель памяти, включающую пространство для стека вызовов и динамическое распределение памяти . В этой модели четыре из восьми регистров общего назначения процессора выполняют специальные роли: R4 используется в качестве базового регистра для загрузки и хранения глобальных данных, R5 используется для указания на текущую область функции в стеке вызовов, а R6 используется. как указатель стека. Кроме того, R7 обычно зарезервирован для хранения адресов возврата из вызовов функций; Инструкции JSR, JSRR и TRAP автоматически сохраняют адреса возврата в этом регистре во время своего выполнения.

Когда в рамках этой модели вызывается функция C, параметры функции помещаются в стек справа налево. Затем в стеке выделяется место для возвращаемого значения вызываемой функции, адреса инструкции в вызывающем объекте, к которому осуществляется возврат, и значения R5 вызывающего объекта. Локальные переменные вызываемой функции помещаются в стек в том порядке, в котором они объявлены. Обратите внимание, что LC-3 не имеет собственных инструкций PUSH и POP, поэтому для реализации стека инструкции сложения и хранения в памяти должны использоваться отдельно.

LC -3b ISA описывает модифицированную версию LC-3, которая включает следующие изменения:

  • Размер слова машины остается 16 бит, но ее память теперь имеет побайтовую адресацию с тем же адресным пространством.
  • Инструкции LD и ST (загрузка и сохранение данных с использованием адресации относительно ПК) были удалены.
  • Инструкции LDI и STI (косвенная загрузка и сохранение) используют адресацию на основе регистров вместо адресации относительно ПК.
  • Для управления отдельными байтами памяти были добавлены две инструкции, LDB и STB; другие инструкции загрузки и сохранения продолжают действовать на целые слова.
  • Зарезервированный код операции был преобразован в инструкцию сдвига SHF, которая поддерживает арифметические и логические сдвиги произвольного размера в обоих направлениях.

Эти изменения делают аппаратное обеспечение LC-3b немного более сложным, чем у LC-3. Например, LC-3b нужен переключатель (у LC-3 его нет) и дополнительная логика в блоке памяти для правильной обработки загрузки и хранения данных различного размера.

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б Патт, Йельский университет, Н .; Патель, Санджай (2003). Введение в вычислительные системы: от битов и вентилей до C и не только . Нью-Йорк, штат Нью-Йорк: Высшее образование Макгроу-Хилла. ISBN  0-07-246750-9 . Проверено 6 октября 2010 г.
  2. ^ Юань-Джанг Ляо и Винг-Квонг Вонг. «Использование программного ядра LC-3 на плате разработки FPGA для микропроцессорных лабораторий». 2013. п. 612-613 из «Интеллектуальные технологии и инженерные системы» .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 78bcd6cbd6ac0ddb0d7a72cf82767d0b__1720632120
URL1:https://arc.ask3.ru/arc/aa/78/0b/78bcd6cbd6ac0ddb0d7a72cf82767d0b.html
Заголовок, (Title) документа по адресу, URL1:
Little Computer 3 - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)