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 Авторские права охраняет Роскомнадзор
| Понравилась статья? Космический пират говорит: поделись с друзьями! |
|
, Электродвигатель питается от сети переменного тока напряжением 220 В частотой 50 Гц. Под крышкой центрифуги установлен выключатель, блокирующий включение двигателя при открытой крышке. Установкой требуемой выдержки времени подготавливают цепи включения реле и нагревателя.