Процессоры C54x имеют команды повторения, которые заставляют
следующую команду повториться нужное число раз. Количество повторений
команды равно значению операнда команды повторения + 1. Максимальное
число повторений команды - 65 536. Абсолютный адрес памяти программ или
данных автоматически увеличивается при каждом повторении команды.
Как только команда повторения декодирована, все прерывания, включая
NMI, но не RS, заблокированы до завершения цикла повторения. Однако
процессор реагирует на сигнал HOLD при выполнении цикла повторения в
соответствии со значением бита HM в регистре состояния 1 (ST1).
Функция повторения может использоваться с некоторыми командами типа
умножение/накопление и блочные пересылки, для увеличения скорости
выполнения этих команд. Эти многоцикловые команды (табл. 3.28) становятся
одноцикловыми после первой итерации команды повторения.
Отдельные команды одного операнда в памяти данных не могут быть
повторены при использовании длинного смещения или абсолютного адреса
|
|
(например, *ARn(lk), *+ARn(lk), *+ARn(lk)% и *(lk)). Команды, перечисленные
в табл. 3.29 не могут быть повторены командами RPT или RPTZ.
Таблица 3.28. Многоцикловые команды, выполняемые за один цикл при повторении
Команда | Описание | Циклы+ |
FIRS | Симметричный FIR-фильтр | |
MACP | Умножаются с аккумулированием и задержкой | |
MACD | Умножаются с аккумулированием | |
MVDK | Пересылка данные-данные | |
MVDM | Пересылка данные-регистры | |
MVDP | Пересылка данные-программа | |
MVKD | Пересылка данные-данные | |
MVMD | Пересылка регстры-данные | |
MVPD | Пересылка программа-данные | |
READA | Чтение из памяти программ в память данных | |
WRITA | Запись из памяти данных в память программ |
Таблица 3.29. Неповторяемые команды
Команда Описания | |||
ADDM Прибавить длинную константу к памяти данных | |||
ANDM “И” память данных с длинной константой | |||
B [D] Безусловный переход | |||
BACC [D] Переход по адресу из аккумулятора | |||
BANZ [D] Переход по вспомогательному регистру не равному 0 | |||
BC [D] Условный переход | |||
CALA [D] Вызов подпрограммы по адресу из аккумулятора | |||
CALL [D] Безусловный вызов подпрограммы | |||
CC [D] Условный вызов подпрограммы | |||
CMPR Сравнение вспомогательных регистров | |||
DST Сохранение длинного слова (32 бита) | |||
FB [D] Дальний безусловный переход | |||
FBACC [D] Дальний переход по адресу из аккумулятора | |||
FCALA [D] Дальний вызов подпрограммы по адресу из аккумулятора | |||
FCALL [D] Дальний безусловный вызов подпрограммы | |||
FRET [D] Дальний возврат | |||
FRETE [D] Разрешение прерывания и дальний возврат | |||
IDLE Команда ожидания | |||
INTR Прерывание | |||
LD ARP Загрузка указателя вспомогательного регистра (ARP) | |||
LD DP Загрузка указателя страницы данных (DP) | |||
MVMM Пересылка регистров отображаемых на память | |||
ORM “ИЛИ” память данных с длинной константой | |||
RC [D] Условный возврат | |||
RESET Программный сброс | |||
RET [D] Безусловный возврат | |||
RETE [D] Возврат из прерывания | |||
RETF [D] Быстрый возврат из прерывания | |||
RND Округление аккумулятора | |||
RPT Повторить следующую команду | |||
RPTB [D] Повторить блок | |||
RPTZ Повторить следующую команду и очистить аккумулятор | |||
RSBX Сброса бита регистра состояния | |||
SSBX Установка бита регистра состояния | |||
TRAP Программное прерывание | |||
XC Условное выполнение команды | |||
XORM “исключающее ИЛИ” память данных с длинной константой |
|
|