9zip.ru - технологии для людей
9zip.ru Инструкции Виртуальная машина

В микроконтроллерах AVR, как и во многих других контроллерах с Гарвардской архитектурой, существует глобальная проблема. Программа не может быть загружена в ОЗУ. Считается, что задачи микроконтроллера жестко определены и не меняются в процессе работы.

Действительно, в большинстве случаев это так. Однако, иногда встречаются задачи, где хочется дать пользователю широкие возможности настройки. Например, задать алгоритм регулирования или алгоритм управления специфическим оборудованием...

Чтобы не раздувать без необходимости систему команд, можно использовать стековую машину с безоперандными командами. Пожалуй, единственная команда, которая требует операнда - "положить в стек число".

Разрядность данных, пожалуй, должна быть 16 или 32 бита. Это делает виртуальную машину более эффективной и позволяет работать с адресами как с данными, хотя отнимает больше памяти и вызывает некоторые трудности при работе с байтами (например со строками).

Программная модель может быть примерно такой:
DSP - указатель стека данных
RSP - указатель стека возвратов
TOS - вершина стека данных

Операнды команд берутся со стека данных.
Результаты кладутся туда же.
Стек возвратов используется для операций
"CALL" и "RET".

TOS можно не выделять в отдельный регистр.
Хотя на операциях арифметики такое выделение
выгодно, на остальных - неудобно.

Cистема команд может быть такой:
IMM # - загрузить константу
LD - прочитать
ST - сохранить

ADD - сложить
SUB - вычесть
MUL - умножить
DIV - делить
REM - остаток
AND - побитовое И
OR - побитовое ИЛИ
XOR - исключающее ИЛИ

MORE - больше
LESS - меньше

JMP - безусловный переход
IF - условный переход
CALL - вызов подпрограммы
RET - выход из подпрограммы

DUP - дублировать TOS
DROP - выкинуть TOS
OVER - скопировать из стека
ROT - выдернуть из стека

Итого 21 команда.

Увеличить производительность такой машины можно расширив команды "LD" и "ST" различными методами адресации, хотя, как мне кажется, это не очень вписывается в общую "идеологию".

01.02.2015 © 9zip.ru
Авторские права охраняет Роскомнадзор

Понравилась статья? Похвастайся друзьям:

Хочешь почитать ещё про инструкции? Вот что наиболее популярно на этой неделе:
Изготовление прокладок из силикона
Необычные неисправности магнитол
Преобразователи напряжения на микросхеме NE555
Космический пират одобряет.

Есть вопросы, комментарии? Напиши:

Имя
Комментарий
Длина текста:
число с картинки
Правила прочитал(а)

Пользовательские теги: умножение mul в виртуальной машине [ Что это? ]

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

Главная 9zip.ru База знаний радиолюбителя Контакты

Девять кучек хлама:

Радиотехника, электроника и схемы своими руками Ремонт домашней электроники Виртуальный музей старых радиодеталей XX века Ламповый звук hi-end и винтажная электроника Катушки Теслы Радиодетали и модули с Aliexpress Интернет и сети Сотовые операторы Инструкции



Дайджест
радиосхем
Новые схемы интернета - в одном месте!

Конкурс
для всех
Участвуй в новом конкурсе для радиолюбителей в ноябре-декабре 2016 и получай призы!



Гостевушечка


Сколько тебе лет?
Попытаемся составить портрет современного радиолюбителя...

Голосование запущено 07 ноября 2016, приняло участие 212 человек.