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
Авторские права охраняет Роскомнадзор

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

Хочешь почитать ещё про инструкции? Вот что наиболее популярно на этой неделе:
Согласование усилителя с аккустической системой
Лампы против транзисторов или предрассудки против качества и красоты?
Простой генератор звуковой частоты



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

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

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

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

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

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


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

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

 15.11 Терморегулятор с двумя каналами на ATtiny13
 15.11 Часы на ESP32 и светодиодах WS2812b
 15.11 Акустическая система с открытым верхом

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


2.11 Есть проект, где к МК через транзистор подключен ...
1
28.10 Здравия Всем. Нужна помочь, чтоб после запуска ...
18.10 Ребята помогите сделать схему простенькую для ...
2