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" различными методами адресации, хотя, как мне кажется, это не очень вписывается в общую "идеологию".


8 нравится? 9


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

Понравилась статья?
Космический пират говорит:
поделись с друзьями!

Хочешь почитать ещё про инструкции? Вот что наиболее популярно на этой неделе:
Безвакуумный ионный триод
Рефрактометр ИРФ-464
Технология с изменением цифровой схемы пользователем, в том числе и в процессе работы



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

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

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

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

Главная 9zip.ru База знаний радиолюбителя Контакты
Девять кучек хлама:

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


Дайджест
радиосхем

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

 23.2 SCADA тепло-узлов гаражного кооператива
 23.2 Доработка паяльной станции Quicko T75
 18.2 Интерфейсы джойстиков мини-погрузчика МУМС-11 Барс
1

Задай вопрос радиолюбителям!


25.2 Как устроен резистор?
7
25.2 Как отличить танталовый конденсатор от ...
2
22.2 Почему напольные весы показывают разные значения ...
3