Выбрать главу

Ниже приводится полный список многофункциональных команд в соответствии с принятыми ранее условными обозначениями. Назначение команд приводится в тексте описания этих команд. Вычисление с пересылкой регистр-регистр:

| <ALU> |, dreg = dreg;

| <MAC> |

|<SHIFT>|

Вычисление с чтением из памяти:

|<ALU>  |,dreg = |DM(|I0|,|M0|)|;

|<MAC>  |        |   |I1| |M1| |

|<SHIFT>|        |   |I2| |M2| |

                 |   |I3| |M3| |

                 |   |I4| |M4| |

                 |   |I5| |M5| |

                 |   |I6| |M6| |

                 |   |I7| |M7| |

                 |             |

                 |PM(|I4|,|M4|)|;

                 |   |I5| |M5| |

                 |   |I6| |M6| |

                 |   |I7| |M7| |

Вычисление с записью в память:

|DM(|I0|,|M0|)|=dreg, |<ALU>  |;

|   |I1| |M1| |       |<MAC>  |

|   |I2| |M2| |       |<SHIFT>|

|   |I3| |M3| |

|   |I4| |M4| |

|   |I5| |M5| |

|   |I6| |M6| |

|   |I7| |M7| |

|             |

|PM(|I4|,|M4|)|;

|   |I5| |M5| |

|   |I6| |M6| |

|   |I7| |M7| |

Чтение памяти данных и программ:

|AX0|=DM(|I0|,|M0|), |AY0|=PM(|I4|,|M4|);

|AX1|    |I1| |M1|   |AY1|    |I5| |M5|

|MX0|    |I2| |M2|   |MY0|    |I6| |M6|

|MX1|    |I3| |M3|   |MY1|    |I7| |M7|

Команда АЛУ или MAC с чтением памяти данных и программ:

|<ALU>|,|AX0|=DM(|I0|,|M0|), |AY0|=PM(|I4|,|M4|);

|<MAC>| |AX1|    |I1| |M1|   |AY1|    |I5| |M5|

        |MX0|    |I2| |M2|   |MY0|    |I6| |M6|

        |MX1|    |I3| |M3|   |MY1|    |I7| |M7|

В качестве регистров dreg могут быть использованы регистры: AX0, АХ1, AY0, AY1, AR, MX0, МХ1, MY0, MY1, MR0, MR1, MR2, SI, SE, SR0 и SR1.

Примечания:

<ALU>¹ — любая команда АЛУ (исключая DIVS и DIVQ);

<MAC>¹ — любая команда умножителя/накопителя;

<SHIFT>² — любая команда устройства сдвига (исключая непосредственный сдвиг);

где ¹ — должны использоваться только регистры результатов AR, MR, а не регистры обратных связей AF, MF; ² — не могут быть условными командами.

Дополнительные команды

В системе команд сигнального процессора имеется несколько команд, которые нельзя отнести ни к одной из перечисленных ранее групп. Полный список этих команд в соответствии с принятыми ранее условными обозначениями приводится ниже.

Пустая команда:

NOP;

Модифицировать регистр адреса:

MODIFY(|I0|,|M0|);

       |I1| |M1|

       |I2| |M2|

       |I3| |M3|

       |I4| |M4|

       |I5| |M5|

       |I6| |M6|

       |I7| |M7|

Управление стеками:

[|PUSH| STS] [,POP CNTR] [,POP PC] [,POP LOOP];

 |POP |

Управление режимом:

|ENA| |SEC_REG | [, ...];

|DIS| |BIT_REV |

      |AV_LATCH|

      |AR_SAT  |

      |M_MODE  |

      |TIMER   |

      |G_MODE  |

      |INTS    |

Ключевые слова означают следующие режимы:

SEC_REG — фоновый регистровый файл;

BIT_REV — бит-реверс адреса генератора DAG1;

AV_LATCH — защелка статуса переполнения АЛУ (AV);

AR_SAT — насыщение регистра AR;

M_MODE — режим размещения результата MAC;

TIMER — разрешить работу таймера;

G_MODE — разрешить режим «Go mode»;

INTS — разрешить прерывания.

NOP — это команда отсутствия операций. Она часто применяется для выполнения холостого цикла процессора в качестве задержки на один такт.

Команда MODIFY позволяет модифицировать указатель адреса в заданном регистре I на величину, которая содержится в заданном регистре M, не обращаясь при этом к памяти. Как и во всех других случаях, регистры I и M должны быть регистрами одного и того же генератора адреса данных; любой регистр I0–I3 может использоваться в комбинации с любым регистром M0–M3, а любой регистр I4–I7 — с любым регистром M4–M7.

Команды PUSH и POP позволяют непосредственно управлять содержимым стеков состояния, счетчика, счетчика программ (PC) и циклов. Некоторые из этих стеков автоматически заполняются и опустошаются во время обслуживания прерываний.

Команды управления режимом разрешают и блокируют режимы некоторых операций процессора. Эта команды управляют режимами реверсной адресации в генераторе адреса данных 1, фиксацией переполнения АЛУ, насыщением регистра результата АЛУ, выбором набора основных или теневых регистров, режимом GO для непрекращающейся работы процессора во время предоставления шины, режимом сдвига в умножителе для выполнения целочисленных или дробных вычислений и активизацией таймера. За операторами ENA или DIS может следовать через запятую сколько угодно идентификаторов. Команды ENA и DIS могут повторяться в командной строке. Кроме того, все семь режимов могут разрешаться, блокироваться или изменяться при помощи всего одной команды.