ПРОГРАММНЫЙ СИНТЕЗ Постановка задачи Требуется на языке ассемблера TMS320C6x разработать программу, обеспечивающую решение фрагмента некоторой задачи, заданного в табл. 1 в соответствии с номером варианта. Номер варианта М определяется по номеру студента в списке группы. для вариантов, помеченных звездочкой, двоичные слова блока, размещенные в процессорной памяти, начиная с ячейки m2m1+1; для остальных вариантов за исключением 13 – блок из 8 2-разрядных двоичных слов, размещенный в ячейке m2m1 процессорной памяти. m2m1 – 2 последние цифры номера зачетной книжки Структура блока произвольна и заранее не известна. Таблица 1. Содержание фрагмента задачи М Фрагмент задачи 0 *Установить значение наибольшего по величине двоичного слова в блоке. 1 Определить количество наибольших по величине двоичных слов в блоке, ели эта величина известна и хранится в ячейке памяти m2m1+16. 2 *Определить порядковые номера, занимаемые наибольшими по величине двоичными словами в блоке, ели эта величина известна и хранится в ячейке памяти m2m1+16. Результаты сохранить в памяти, начиная с ячейки 1m2m1. 3 *Сформировать новый блок без наименьших по величине двоичных слов исходного блока, ели эта величина известна и хранится в ячейке памяти m2m1+16. 4 Сформировать новый блок без наименьших по величине двоичных слов исходного блока, ели их порядковые номера хранятся в ячейках памяти с 1m2m1–2 по 1m2m1+2. 5 *Сформировать новый блок из нечетных по величине двоичных слов исходного блока. 6 Сформировать новый блок, где двоичные слова нечетных позиций соответствуют исходному блоку, а четных позиций представляют собой результат поразрядной инверсии двоичных слов исходного блока. 7 *Сформировать новый блок, двоичные слова которого представляют собой дополнительный код соответствующих двоичных слов исходного блока. 8 *Определить количество единичных бит в блоке. 9 Определить количество нулевых бит в блоке. 10 Сформировать новый блок из двоичных слов, имеющих точно одну единицу. 11 Выполнить поразрядную дизъюнкцию над двоичными словами со следующими порядковыми номерами: 1 и 8, 2 и 7, 3 и 6, 4 и 5. Результаты сохранить в памяти, начиная с ячейки 1m2m1. 12 *Для каждого двоичного слова выполнить операцию у0у1. Результаты сохранить в памяти, начиная с ячейки 1m2m1. 13 В последовательности из 8 блоков в памяти, начиная с ячейки 1m2m1, сохраняется только блок, число нулевых старших разрядов которого меньше 5. При этом сохранению подлежат лишь 8 разрядов, начиная с первой значащей единицы. 14 *Сформировать новый блок, состоящий только из старших разрядов двоичных слов. В остальных вариантах сформировать новый блок с измененным порядком следования двоичных слов (ДС) исходного блока: 15 *ДС1 ДС8 ДС2 ДС7 ДС3 ДС6 ДС4 ДС5 16 *ДС1 ДС3 ДС5 ДС7 ДС2 ДС4 ДС6 ДС8 17 *ДС1 ДС5 ДС2 ДС6 ДС3 ДС7 ДС4 ДС8 18 *ДС4 ДС5 ДС3 ДС6 ДС2 ДС7 ДС1 ДС8 19 *ДС2 ДС4 ДС6 ДС8 ДС1 ДС3 ДС5 ДС7 20 *ДС2 ДС4 ДС1 ДС3 ДС6 ДС8 ДС5 ДС7 21 *ДС1 ДС2 ДС5 ДС6 ДС3 ДС4 ДС7 ДС8 22 *ДС7 ДС5 ДС3 ДС1 ДС8 ДС6 ДС4 ДС2
23 *ДС4 ДС3 ДС2 ДС1 ДС8 ДС7 ДС6 ДС5 24 *ДС8 ДС7 ДС6 ДС5 ДС4 ДС3 ДС2 ДС1 25 *ДС2 ДС1 ДС4 ДС3 ДС6 ДС5 ДС8 ДС7 26 *ДС3 ДС6 ДС1 ДС4 ДС7 ДС2 ДС5 ДС8 27 *ДС6 ДС3 ДС8 ДС5 ДС2 ДС7 ДС4 ДС1 28 *ДС1 ДС3 ДС7 ДС5 ДС2 ДС4 ДС8 ДС6 29 ДС8 ДС7 ДС6 ДС5 ДС4 ДС3 ДС2 ДС1 Для разработанной программы определить число пакетов выборки и выполняемых пакетов. Решение поставленной задачи В данной работе достаточно ограничиться двумя этапами программного синтеза: разработкой детального алгоритма, отражающего идею решения задачи, и его описанием на языке ассемблера TMS320C6x. 2.2.1. Требования к построению детального алгоритма Обычно алгоритм представляется блок-схемой. В каждом блоке в словесной или символической форме описывается операция, выполняемая на данном шаге решения задачи. Алгоритмические блоки, за исключением блоков «начало» и «конец» нумеруются в порядке их следования сверху вниз и слева направо. Для примера на рис. 1 приведена блок-схема, характерная для циклических (многократное повторение одних и тех же вычислений, но для различных исходных данных) процессов. В примере операции описываются в символической форме. А4 mem(A6) . . . да нет 13 10 11 . . . 16 12 Загрузка содержимого ячейки памяти, адресуемой содержимом регистра А6 в регистр А4 Если содержимое регистра А7 не равно 0, повторить операции тела цикла (блоки 13 … 16) Логический сдвиг влево на 2 разряда содержимого регистра В10 Уменьшить содержимое регистра А7 на 1. (A7) = 0 mem(A8) А9 Выход из цикла и продолжение алгоритма . . . Л.Сдв.Л2(В10) А6 (A6) + 1 Рис. 1. Фрагмент блок-схемы алгоритма
Требования к написанию программы Программа представляет собой последовательное описание алгоритмических блоков на языке программирования, и сопровождаться комментариями. При написании программы на языке ассемблера необходимо учитывать архитектурные особенности процессора. Применительно к TMS320C6x основными из таких особенностей являются: циклические вычисления реализуются только с помощью команды перехода; условной может быть любая команда; параллельное выполнение до 8 команд. Структурно ассемблерная программа состоит из последовательности строк, в каждой из которых размещается только одна команда. Командные строки не нумеруются. ОСНОВНЫЕ СВЕДЕНИЯ О ПРОЦЕССОРЕ TMS320C6x 1. Структура ЛСЭ – логика снижения энергопотребления. ИВП – интерфейс внешней памяти. ПДП – контроллер прямого доступа в память. 1х и 2х – перекрестные линии. .L, .S, .M, .D – функциональные устройства (модули), из которых .L, .S и .D – АЛУ, .M – умножитель. 2. Основные команды для чисел с фиксированной запятой Условности при описании команд: R1 – регистр 1-го операнда, R2 – регистр 2-го операнда, Rsm – регистр смещения, Rbas – регистр базы, Rres – регистр результата, cst – константа. Тип операнда обозначается аббревиатурой: int – 32-разрядное целое, short – короткое (16-разрядное), long – длинное (40-разрядное). Перед каждой аббревиатурой типа буква s означает величину со знаком (т.е. старший разряд является знаковым, а остальные разряды представляют число в дополнительном коде), а буква u – величину без знака (т.е. все разряды представляют число в прямом коде). Любой тип, начинающийся буквой х, означает, что операнд может исходить из противоположного регистрового файла. Слот задержки – интервал времени (число тактов) между началом выполнения команды и моментом времени, когда результат становится доступным для чтения. Программная память 512 Кбит 256-разрядные команды; 32-разрядные адреса ЦПУ Пакет выборки команд Диспетчер команд Декодер команд РОНы А 2x 1x РОНы В .L1 .S1 .M1 .D1 .D2 .M2 .S2 .L2 Управляющие регистры Управляющая логика Тестирование Эмуляция Прерывания ЛСЭ ПДП, ИВП Доп. периферия: таймеры, последоват. порты и т.д. Память данных 8-,16-,32-разрядные данные; 32-разрядные адреса адреса данные данные
ZERO Rres Обнуление регистра Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .L1 или .L2, .S1 или .S2, .D1 или .D2 нет нет sint 1-тактная 0 .L1 или .L2 нет нет slong ABS R1, Rres Абсолютная величина целого Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .L1 или .L2 xsint нет sint 1-тактная 0 Описание: абсолютная величина R1 устанавливается в Rres. ADD R1, R2, Rres Сложение знаковых целых Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .L1 или .L2 sint sint xsint scst5 scst5 xsint xsint slong xsint slong sint slong slong sint slong 1-тактная 0 .S1 или .S2 sint scst5 xsint xsint sint sint .D1 или .D2 sint ucst5 sint sint sint sint Описание: R2 добавляется к R1 (для устройств .L и .S) или R1 добавляется к R2 (для устройств .D) и результат устанавливается в Rres. ADDU R1, R2, Rres Сложение беззнаковых целых Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .L1 или .L2 uint xuint xuint ulong ulong ulong 1-тактная 0 Описание: R2 добавляется к R1 и результат устанавливается в Rres. ADDK cst, Rres Сложение целых с использованием знаковой 16-разрядной константы Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .S1 или .S2 scst16 Rres uint 1-тактная 0 Описание: 16-разрядная знаковая константа добавляется к регистру Rres и результат устанавливается в Rres. ADD2 R1, R2, Rres Два 16-разрядных целых добавляются к старшей и младшей половинам регистра Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .S1 или .S2 sint xsint sint 1-тактная 0 Описание: старшая и младшая половины R1 добавляются к старшей и младшей половинам R2, соответственно. Перенос от младшей половины результата к старшей не производится. Результат устанавливается в Rres. AND R1, R2, Rres Поразрядное И Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .S1 или .S2, .L1 или .L2 uint scst5 xuint xuint uint uint 1-тактная 0 Описание: над R1 и R2 выполняется поразрядное И. Результат устанавливается в Rres. Константа распределяется на 32-х разрядах. В R1 Переход Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .S1 или .S2 метка нет переход Ветвление 5 .S2 xuint нет CLR R1, R2, R3, Rres Очистить область бит беззнакового целого
Устройство Тип операндов Тип результата Тип команды Такты задержки R1 R2 R3 .S1 или .S2 uint xuint ucst15 uint ucst15 нет uint uint 1-тактная 0 Описание: область в R1, заданная константами R2 и R3, сбрасывается в ноль, и результат устанавливается в Rres. Константа R2 определяет номер младшего бита (относительно нулевого разряда R1), а константа R3 – номер старшего бита (относительно нулевого разряда R1) области, которая должна очищаться. Константы могут быть определены десятью младшими битами регистра R2, где первая константа является битами 0-4, а вторая – битами 5-9. CMPEQ R1, R2, Rres Сравнение знаковых целых на равенство Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .L1 или .L2 sint scst5 xsint scst5 xsint xsint slong slong uint uint uint uint 1-тактная 0 Описание: сравнение R1 с R2. Если R1 = R2, то в Rres записывается 1. В противном случае в Rres записывается 0. CMPGT R1, R2, Rres Сравнение знаковых целых в отношении "больше" Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .L1 или .L2 sint scst5 xsint scst5 xsint xsint slong slong uint uint uint uint 1-тактная 0 Описание: сравнение R1 с R2. Если R1 > R2, то в Rres записывается 1. В противном случае в Rres записывается 0. Если в команде константа указана на месте R2, то ассемблер сам переставит её на первое место. CMPGTU R1, R2, Rres Сравнение беззнаковых целых в отношении "больше" Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .L1 или .L2 uint ucst4 xuint ucst4 xuint xuint ulong ulong uint uint uint uint 1-тактная 0 Описание: сравнение R1 с R2. Если R1 > R2, то в Rres записывается 1. В противном случае в Rres записывается 0. Если в команде константа указана на месте R2, то ассемблер сам переставит её на первое место. CMPLT R1, R2, Rres Сравнение знаковых целых в отношении "меньше" Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .L1 или .L2 sint scst5 xsint scst5 xsint xsint slong slong uint uint uint uint 1-тактная 0 Описание: сравнение R1 с R2. Если R1 < R2, то в Rres записывается 1. В противном случае в Rres записывается 0. Если в команде константа указана на месте R2, то ассемблер сам переставит её на первое место. CMPLTU R1, R2, Rres Сравнение беззнаковых целых в отношении "меньше" Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .L1 или .L2 uint ucst4 xuint ucst4 xuint xuint ulong ulong uint uint uint uint 1-тактная 0 Описание: сравнение R1 с R2. Если R1 < R2, то в Rres записывается 1. В противном случае в Rres записывается 0. Если в команде константа указана на месте R2, то ассемблер сам переставит её на первое место. ЕХТ R1, R2, R3, Rres Выделение и расширение знаком области бит Устройство Тип операндов Тип результата Тип команды Такты задержки R1 R2 R3 .S1 или .S2 sint xsint ucst5 uint ucst5 нет sint sint 1-тактная 0
Описание: область в R1, определённая константами R2 и R3, извлекается и размещается в Rres, расширяясь знаком до 32-х разрядов. Номер старшего бита области равен разности (31 – первая константа(R2)), а номер младшего бита области – разности (вторая константа(R3) - первая константа(R2)). Выделенная область переносится в R1, сдвигается влево на число разрядов, равное первой константе, а затем – вправо на число разрядов, равное второй константе. При сдвигах вправо освобождавшиеся разряды заполняются знаком (старшим разрядом области). Константы могут быть определены как 10 младших бит регистра R2, где первая константа является битами 5-9, а вторая – битами 0-4. ЕХТU R1, R2, R3, Rres Выделение и расширение нулями области бит Устройство Тип операндов Тип результата Тип команды Такты задержки R1 R2 R3 .S1 или .S2 uint xuint ucst5 uint ucst5 нет uint uint 1-тактная 0 Описание: всё также как и в команде ЕХТ, но заполнение производится нулём. LDB, LDBU, LDH, LDHU, LDW R1, Rres Загрузка из памяти с 5-разрядной беззнаковой константой смещения или с регистром смещения Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .D1 или .D2 См. синтаксис R1 нет Содержимое ячейки памяти Загрузка 4 Описание: каждая из этих команд загружает из памяти в регистр Rres РОН. Синтаксис R1, определяющий правило формирования адреса: Синтаксис Выполняемая модификация регистра Rbas *+Rbas[Rsm] или *+Rbas[ucst5] Положительное смещение. К Rbas добавляется Rsm или ucst5, причём Rbas не изменяется. Адресом является результат суммирования. *-Rbas[Rsm] или *-Rbas[ucst5] Отрицательное смещение. Из Rbas вычитается Rsm или ucst5, причём Rbas не изменяется. Адресом является результат вычитания. *++Rbas[Rsm] или *++Rbas[ucst5] Преинкремент. К Rbas добавляется Rsm или ucst5, изменяя Rbas. Адресом является изменённое содержимое Rbas. *- -Rbas[Rsm] или *- - Rbas[ucst5] Предекремент. Из Rbas вычитается Rsm или ucst5, изменяя Rbas. Адресом является изменённое содержимое Rbas. *Rbas++ [Rsm] или *Rbas++ [ucst5] Постинкремент. К Rbas добавляется Rsm или ucst5, изменяя Rbas. Адресом является содержимое Rbas до его изменения. *Rbas- -[Rsm] или *Rbas- - [ucst5] Постдекремент. Из Rbas вычитается Rsm или ucst5, изменяя Rbas. Адресом является содержимое Rbas до его изменения. Если смещение (Rsm или ucst5) не задаётся, ассемблер назначает нулевое смещение, а инкременты и декременты равны 1. Rbas и Rsm должны быть в том же регистровом файле и на той же стороне, что и используемое устройство .D. Rsm и cst5 до операции по формированию адреса сдвигаются влево на 0 (LDB и LDBU), 1 (LDH и LDHU) или 2 (LDW) разряда. Адресная арифметика (сложение и вычитание) по умолчанию выполняется в линейном способе. Однако, для А4-А7 и В4-В7 может быть изменён на циклический способ путём записи соответствующей величины в регистр AMR. Для команд LDB(U) и LDH(U) загружаются только младшие 8 и 16 бит, соответственно, при этом остальные разряды заполняются знаком (LDB и LDH) или нулями (LDBU и LDHU). Для LDW заполняются все 32 разряда Rres. LDB, LDBU, LDH, LDHU, LDW R1, Rres Загрузка из памяти с 15-разрядной беззнаковой константой смещения Устройство Тип операндов Тип результата Тип команды Слоты задержки Синтаксис R1 R2 .D2 *+B14[ucst15] или *+B15[ucst15] нет Содержимое ячейки памяти Загрузка 4 Описание: каждая из этих команд загружает из памяти в регистр Rres РОН. До операции по формированию адреса (вычитание не поддерживается) cst15 сдвигается влево на 0 (LDB и LDBU), 1 (LDH и LDHU) или 2 (LDW) разряда. Адресная арифметика всегда выполняется в линейном способе. Для команд LDB(U) и LDH(U) загружаются только младшие 8 и 16 бит, соответственно, при этом остальные разряды заполняются знаком (LDB и LDH) или нулями (LDBU и LDHU). Для LDW заполняются все 32 разряда Rres. LMBD R1, R2, Rres Обнаружение самого левого бита Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .L1 или .L2 uint cst5 xuint xuint uint uint 1-тактная 0 Описание: младший бит R1 определяет, что искать в R2– самую левую единицу или самый левый ноль. Информация о количестве бит слева от первой 1 или первого 0 при поиске 1 или 0, соответственно, размещает-
ся в Rres. MPY, MPYU, MPYUS, MPYSU R1, R2, Rres Умножение 16 х 16 младших бит знаковых или беззнаковых целых Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .М1 или .М2 sмл.16бит uмл.16бит uмл.16бит sмл.16бит scst5 scst5 хsмл.16бит xuмл.16бит xsмл.16бит xuмл.16бит xsмл.16бит xuмл.16бит sint uint sint sint sint sint Умножение 16 на 16 1 Описание: 16 младших бит R1 умножаются на 16 младших бит R2 и результат размещается в Rres. В команде MPY оба операнда знаковые. Позиция буквы S в мнемонике команды соответствует знаковому из двух сомножителей R1 и R2, другой из которых – без знака. MPYН, MPYНU, MPYНUS, MPYНSU R1, R2, Rres Умножение 16 х 16 старших бит знаковых или беззнаковых целых Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .М1 или .М2 sст.16бит uст.16бит uст.16бит sст.16бит хsст.16бит xuст.16бит xsст.16бит xuст.16бит sint uint sint sint Умножение 16 на 16 1 Описание: 16 старших бит R1 умножаются на 16 старших бит R2 и результат размещается в Rres. В команде MPY оба операнда знаковые. Позиция буквы S в мнемонике команды соответствует знаковому из двух сомножителей R1 и R2, другой из которых – без знака. MPYНL, MPYНLU, MPYНULS, MPYНSLU R1, R2, Rres Умножение 16 старших бит на 16 младших бит знаковых или беззнаковых целых Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .М1 или .М2 sст.16бит uст.16бит uст.16бит sст.16бит хsмл.16бит xuмл.16бит xsмл.16бит xuмл.16бит sint uint sint sint Умножение 16 на 16 1 Описание: 16 старших бит R1 умножаются на 16 младших бит R2 и результат размещается в Rres. В команде MPYHL оба операнда знаковые, а в команде MPYHLU – оба без знаковые. Позиция буквы S в мнемонике команды соответствует знаковому из двух сомножителей R1 и R2, другой из которых – без знака. MPYLН, MPYLНU, MPYLUНS, MPYLSНU R1, R2, Rres Умножение 16 младших бит на 16 старших бит знаковых или беззнаковых целых Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .М1 или .М2 sмл.16бит uмл.16бит uмл.16бит sмл.16бит хsст.16бит xuст.16бит xsст.16бит xuст.16бит sint uint sint sint Умножение 16 на 16 1 Описание: 16 младших бит R1 умножаются на 16 старших бит R2 и результат размещается в Rres. В команде MPYHL оба операнда знаковые, а в команде MPYHLU – оба без знаковые. Позиция буквы S в мнемонике команды соответствует знаковому из двух сомножителей R1 и R2, другой из которых – без знака. MV R1, Rres Перемещение из одного регистра в другой Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .L1 или .L2, .S1 или .S2 xsint нет sint 1-тактная 0 .D1 или .D2 sint нет sint .L1 или .L2 slong нет slong
MVК R1, Rres Перемещение 16-разрядной константы в пределах регистра и расширение знаком Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .S1 или .S2 scst16 нет sint 1-тактная 0 Описание: 16-разрядная константа является расширенной знаком (т.е. свободные старшие разряды Rres заполняются знаком константы) и размещается в Rres. MVКН, MVКLН R1, Rres Перемещение 16-разрядной константы в старшие разряды регистра Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .S1 или .S2 scst16 нет sint 1-тактная 0 Описание: 16 старших (MVКН) или 16 младших (MVКLН) разрядов константы загружаются в старшие разряды Rres. 16 младших разрядов Rres остаются неизменными. NOP R1 Нет операции Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 нет ucst4 нет нет NOP 0 Описание: R1 задаёт число тактов, в течение которых никакие операции (за исключением перехода) не производятся. NOP без операнда рассматривается как NOP 1. NOT R1, Rres Поразрядное НЕ Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .L1 или .L2, .S1 или .S2 xuint нет uint 1-тактная 0 OR R1, R2, Rres Поразрядное ИЛИ Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .L1 или .L2, .S1 или .S2 uint scst5 xuint xuint uint uint 1-тактная 0 Примечание: константа представляется в дополнительном коде и расширяется знаком вплоть до 32-х бит. SET R1, R2, R3, Rrest Установка области бит Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 R3 .S1 или .S2 uint xuint ucst5 uint ucst5 нет uint uint 1-тактная 0 Описание: область в R1, определенная константой R2 и константой R3, размещается в Rrest, после чего устанавливается во все единицы. Первая (R2) и вторая (R3) константы определяют номер (относительно нулевого разряда), соответственно, младшего и старшего разряда области, которая должна устанавливаться во все единицы. Константы могут быть определены как десять младших бит регистра R2, причём биты 0-4 соответствуют второй константе, а биты 5-9 – первой. SHL R1, R2, Rrest Арифметический сдвиг влево Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .S1 или .S2 xsint slong xuint xsint xuint slong uint uint uint ucst5 ucst5 ucst5 sint slong ulong sint ulong slong 1-тактная 0 Описание: операнд R1 загружается в Rrest, после чего перемещается влево на число разрядов, определённых константой R2. Когда в качестве R2 используется регистр, величину сдвига определяют шесть его младших бит. Если 39 < R2 < 64, R1 перемещается влево на 40 разрядов. Освобождающиеся при сдвиге разряды заполняются нулями. SHR R1, R2, Rrest Арифметический сдвиг вправо Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2
.S1 или .S2 xsint slong xsint slong uint uint ucst5 ucst5 sint slong sint slong 1-тактная 0 Описание: операнд R1 загружается в Rrest, после чего перемещается вправо на число разрядов, определённых константой R2. Результат расширяется знаком. Когда в качестве R2 используется регистр, величину сдвига определяют шесть его младших бит. Если 39 < R2 < 64, R1 перемещается вправо на 40 разрядов. SHRU R1, R2, Rrest Логический сдвиг вправо Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .S1 или .S2 xuint ulong xuint ulong uint uint ucst5 ucst5 uint ulong uint ulong 1-тактная 0 Описание: операнд R1 загружается в Rrest, после чего перемещается вправо на число разрядов, определённых константой R2. Результат расширяется нулями. Когда в качестве R2 используется регистр, величину сдвига определяют шесть его младших бит. Если 39 < R2 < 64, R1 перемещается вправо на 40 разрядов. STB, STH, STW R*R1 Загрузка в память с 5-разрядной беззнаковой константой смещения или с регистром смещения Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .D1 или .D2 См. синтаксис R1 нет нет Хранение 0 Описание: каждая из этих команд загружает в память из регистра R РОН. Синтаксис R1 и выполнение Rbas и Rsm такие же, как у аналогичных команд LD. STB, STH, STW R*R1 Загрузка в память с 15-разрядной беззнаковой константой смещения Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .D1 или .D2 См. синтаксис R1 нет нет Хранение 0 Описание: каждая из этих команд загружает в память из регистра R РОН. Синтаксис R1 такой же, как у аналогичных команд LD. SUB, SUBU R1, R2, Rres Вычитание знакового или беззнакового целого без насыщения Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .L1 или .L2 sint xsint sint xsint uint xuint scst5 xsint sint xsint sint xuint uint slong sint sint slong slong ulong ulong slong 1-тактная 0 .S1 или .S2 sint scst5 xsint xsint sint sint .D1 или .D2 sint sint sint ucst5 sint sint Описание: R2 вычитается из R1 и результат размещается в Rres. XOR R1, R2, Rres Исключающее ИЛИ Устройство Тип операндов Тип результата Тип команды Слоты задержки R1 R2 .L1 или .L2, .S1 или .S2 uint scst5 xuint xuint uint uint 1-тактная 0 Описание: поразрядное исключающее ИЛИ выполняется между R1 и R2. Результат устанавливается в Rres. Константа расширена знаком до 32-х бит.
www.jivo.ruRkJQdWJsaXNoZXIy NzQwMjQ=