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

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

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



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

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

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

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

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

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


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

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

 29.9 Сканер шины I2C на Discovery
 21.9 Bosch M1.5.4 изменение температуры включения ...
 21.9 Простая программа создания матричных символов.

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


20.1 С помощью выходов К561ИЕ8 можно зажечь поочередно, ...
372
28.9 У телевизора на одной из двух светодиодных лент ...
1
24.9 Здравствуйте, получил такую интересную работу , ...
3