Условные обозначения
IDXi | Индексные регистры косвенной адресации (IDX0 и IDX1) |
QRj | Регистры прибавляемого/вычитаемого значения для Rwn (QR0 и QR1) |
QXj | Регистры прибавляемого/вычитаемого значения для IDXi (QX0 и QX1) |
IDXi* | Модификация регистра IDXi после исполнения команды |
Rwn* | Модификация регистра Rwn после исполнения команды |
ACC | Аккумулятор; 40-битовый регистр результата операций (состоит из 8-битового регистра MAE и двух 16-битовых регистров MAH и MAL: MAE||MAH||MAL) |
CoReg | Регистры сопроцессора (MSW, MAH, MAS, MAL, MCW или MRW) |
[op1] | Косвенная адресация (op1 является адресом используемого значения) |
|| | Объединение двух (или более) регистров в один,например: (op2||op1) — op2 — старшее слово 32-разрядного числа, op1 — младшее слово |
>> | Сдвиг битов вправо (без сохранения знака) |
<< | Сдвиг битов влево (без сохранения знака) |
>>> | Арифметический сдвиг битов вправо (с сохранением знака) |
<-> | Сравнение; осуществляется путем вычитания второго операнда из первого без сохранения результата (только обновление флагов арифметико-логического устройства) |
<— | Направление копирования значения Например: op1<—op2 Копировать значение op2 в op1 op1<—op1+op2 Сложить значения op1 и op2 и поместить результат в op1 |
В командах сопроцессора используется 5 модификаций регистра IDXj:
IDXi | IDXi<—IDXi | (без модификации) |
IDXi+ | IDXi<—IDXi+2 | (i=0,1) |
IDXi- | IDXi<—IDXi-2 | (i=0,1) |
IDXi+QXj | IDXi<—IDXi+QXj | (i,j=0,1) |
IDXi-QXj | IDXi<—IDXi-QXj | (i,j=0,1) |
В командах сопроцессора используется 5 модификаций регистра Rwn:
Rwn | Rwn<—Rwn | (без модификации) |
Rwn+ | Rwn<—Rwn+2 | (n=0…15) |
Rwn- | Rwn<—Rwn-2 | (n=0…15) |
Rwn+QRj | Rwn<—Rwn+QRj | (n=0…15;j=0,1) |
Rwn-QRj | Rwn<—Rwn-QRj | (n=0…15;j=0,1) |
Арифметические операции
Абсолютное значение
CoABS
ACC<—Abs(ACC)
CoABS
Абсолютное значение
CoABS op1,op2
ACC<—Abs(op2||op1)
CoABS Rwn,Rwm
CoABS Rwn,[Rwm*]
CoABS [IDXi*],[Rwm*]
Сложение
CoADD op1,op2
ACC<—ACC+(op2||op1)
CoADD Rwn,Rwm
CoADD Rwn,[Rwm*]
CoADD [IDXi*],[Rwm*]
Сложение
CoADD2 op1,op2
ACC<—ACC+2*(op2||op1)
CoADD2 Rwn,Rwm
CoADD2 Rwn,[Rwm*]
CoADD2 [IDXi*],[Rwm*]
Загрузка аккумулятора
CoLOAD op1,op2
ACC<—(op2||op1)
CoLOAD Rwn,Rwm
CoLOAD Rwn,[Rwm*]
CoLOAD [IDXi*],[Rwm*]
Загрузка аккумулятора
CoLOAD- op1,op2
ACC<—0-(op2||op1)
CoLOAD- Rwn,Rwm
CoLOAD- Rwn,[Rwm*]
CoLOAD- [IDXi*],[Rwm*]
Загрузка аккумулятора
CoLOAD2 op1,op2
ACC<—2*(op2||op1)
CoLOAD2 Rwn,Rwm
CoLOAD2 Rwn,[Rwm*]
CoLOAD2 [IDXi*],[Rwm*]
Загрузка аккумулятора
CoLOAD2- op1,op2
ACC<—0-2*(op2||op1)
CoLOAD2- Rwn,Rwm
CoLOAD2- Rwn,[Rwm*]
CoLOAD2- [IDXi*],[Rwm*]
Инверсия знака
CoNEG
ACC<—0-ACC
CoNEG
Инверсия знака с округлением
CoNEG rnd
ACC<—0-ACC+00008000h
CoNEG rnd
Округление аккумулятора
CoRND
ACC<—ACC+00008000h
CoRND
Вычитание
CoSUB op1,op2
ACC<—ACC-(op2||op1)
CoSUB Rwn,Rwm
CoSUB Rwn,[Rwm*]
CoSUB [IDXi*],[Rwm*]
Вычитание
CoSUB2 op1,op2
ACC<—ACC-2*(op2||op1)
CoSUB2 Rwn,Rwm
CoSUB2 Rwn,[Rwm*]
CoSUB2 [IDXi*],[Rwm*]
Вычитание
CoSUB2R op1,op2
ACC<—2*(op2||op1)-ACC
CoSUB2R Rwn,Rwm
CoSUB2R Rwn,[Rwm*]
CoSUB2R [IDXi*],[Rwm*]
Вычитание
CoSUBR op1,op2
ACC<—(op2||op1)-ACC
CoSUBR Rwn,Rwm
CoSUBR Rwn,[Rwm*]
CoSUBR [IDXi*],[Rwm*]
Операции умножения
Умножение с накоплением и округлением результата
CoMAC op1,op2,rnd
ACC<—ACC+op1*op2+00008000h
CoMAC Rwn,Rwm,rnd
CoMAC Rwn,[Rwm*],rnd
CoMAC [IDXi*],[Rwm*],rnd
Умножение с накоплением
CoMAC op1,op2
ACC<—ACC+op1*op2
CoMAC Rwn,Rwm
CoMAC Rwn,[Rwm*]
CoMAC [IDXi*],[Rwm*]
Умножение с накоплением
CoMAC- op1,op2
ACC<—ACC-op1*op2
CoMAC- Rwn,Rwm
CoMAC- Rwn,[Rwm*]
CoMAC- [IDXi*],[Rwm*]
Умножение с накоплением и округлением результата, пересылка данных
CoMACM op1,op2,rnd
ACC<—ACC+op1*op2+00008000h
[IDXi*]<—[IDXi]
CoMACM [IDXi*],[Rwm*],rnd
Умножение с накоплением, пересылка данных
CoMACM op1,op2
ACC<—ACC+op1*op2
[IDXi*]<—[IDXi]
CoMACM [IDXi*],[Rwm*]
Умножение с накоплением, пересылка данных
CoMACM- op1,op2
ACC<—ACC-op1*op2
[IDXi*]<—[IDXi]
CoMACM- [IDXi*],[Rwm*]
Умножение с накоплением и округлением результата, пересылка данных
CoMACMR op1,op2,rnd
ACC<—op1*op2-ACC+00008000h
[IDXi*]<—[IDXi]
CoMACMR [IDXi*],[Rwm*],rnd
Умножение с накоплением, пересылка данных
CoMACMR op1,op2
ACC<—op1*op2-ACC
[IDXi*]<—[IDXi]
CoMACMR [IDXi*],[Rwm*]
Умножение с накоплением и округлением результата, пересылка данных
CoMACMRsu op1,op2,rnd
ACC<—op1*op2-ACC+00008000h
[IDXi*]<—[IDXi]
CoMACMRsu [IDXi*],[Rwm*],rnd
Умножение с накоплением, пересылка данных
CoMACMRsu op1,op2
ACC<—op1*op2-ACC
[IDXi*]<—[IDXi]
CoMACMRsu [IDXi*],[Rwm*]
Умножение с накоплением и округлением результата, пересылка данных
CoMACMRu op1,op2,rnd
ACC<—op1*op2-ACC+00008000h
[IDXi*]<—[IDXi]
CoMACMRu [IDXi*],[Rwm*],rnd
Умножение с накоплением, пересылка данных
CoMACMRu op1,op2
ACC<—op1*op2-ACC
[IDXi*]<—[IDXi]
CoMACMRu [IDXi*],[Rwm*]
Умножение с накоплением и округлением результата, пересылка данных
CoMACMRus op1,op2,rnd
ACC<—op1*op2-ACC+00008000h
[IDXi*]<—[IDXi]
CoMACMRus [IDXi*],[Rwm*],rnd
Умножение с накоплением, пересылка данных
CoMACMRus op1,op2
ACC<—op1*op2-ACC
[IDXi*]<—[IDXi]
CoMACMRus [IDXi*],[Rwm*]
Умножение с накоплением и округлением результата, пересылка данных
CoMACMsu op1,op2,rnd
ACC<—ACC+op1*op2+00008000h
[IDXi*]<—[IDXi]
CoMACMsu [IDXi*],[Rwm*],rnd
Умножение с накоплением, пересылка данных
CoMACMsu op1,op2
ACC<—ACC+op1*op2
[IDXi*]<—[IDXi]
CoMACMsu [IDXi*],[Rwm*]
Умножение с накоплением, пересылка данных
CoMACMsu- op1,op2
ACC<—ACC-op1*op2
[IDXi*]<—[IDXi]
CoMACMsu- [IDXi*],[Rwm*]
Умножение с накоплением и округлением результата, пересылка данных
CoMACMu op1,op2,rnd
ACC<—ACC+op1*op2+00008000h
[IDXi*]<—[IDXi]
CoMACMu [IDXi*],[Rwm*],rnd
Умножение с накоплением, пересылка данных
CoMACMu op1,op2
ACC<—ACC+op1*op2
[IDXi*]<—[IDXi]
CoMACMu [IDXi*],[Rwm*]
Умножение с накоплением, пересылка данных
CoMACMu- op1,op2
ACC<—ACC-op1*op2
[IDXi*]<—[IDXi]
CoMACMu- [IDXi*],[Rwm*]
Умножение с накоплением и округлением результата, пересылка данных
CoMACMus op1,op2,rnd
ACC<—ACC+op1*op2+00008000h
[IDXi*]<—[IDXi]
CoMACMus [IDXi*],[Rwm*],rnd
Умножение с накоплением, пересылка данных
CoMACMus op1,op2
ACC<—ACC+op1*op2
[IDXi*]<—[IDXi]
CoMACMus [IDXi*],[Rwm*]
Умножение с накоплением, пересылка данных
CoMACMus- op1,op2
ACC<—ACC-op1*op2
[IDXi*]<—[IDXi]
CoMACMus- [IDXi*],[Rwm*]
Умножение с накоплением и округлением результата
CoMACR op1,op2,rnd
ACC<—op1*op2-ACC+00008000h
CoMACR Rwn,Rwm,rnd
CoMACR Rwn,[Rwm*],rnd
CoMACR [IDXi*],[Rwm*],rnd
Умножение с накоплением
CoMACR op1,op2
ACC<—op1*op2-ACC
CoMACR Rwn,Rwm
CoMACR Rwn,[Rwm*]
CoMACR [IDXi*],[Rwm*]
Умножение с накоплением и округлением результата
CoMACRsu op1,op2,rnd
ACC<—op1*op2-ACC+00008000h
CoMACRsu Rwn,Rwm,rnd
CoMACRsu Rwn,[Rwm*],rnd
CoMACRsu [IDXi*],[Rwm*],rnd
Умножение с накоплением
CoMACRsu op1,op2
ACC<—op1*op2-ACC
CoMACRsu Rwn,Rwm
CoMACRsu Rwn,[Rwm*]
CoMACRsu [IDXi*],[Rwm*]
Умножение с накоплением и округлением результата
CoMACRu op1,op2,rnd
ACC<—op1*op2-ACC+00008000h
CoMACRu Rwn,Rwm,rnd
CoMACRu Rwn,[Rwm*],rnd
CoMACRu [IDXi*],[Rwm*],rnd
Умножение с накоплением
CoMACRu op1,op2
ACC<—op1*op2-ACC
CoMACRu Rwn,Rwm
CoMACRu Rwn,[Rwm*]
CoMACRu [IDXi*],[Rwm*]
Умножение с накоплением и округлением результата
CoMACRus op1,op2,rnd
ACC<—op1*op2-ACC+00008000h
CoMACRus Rwn,Rwm,rnd
CoMACRus Rwn,[Rwm*],rnd
CoMACRus [IDXi*],[Rwm*],rnd
Умножение с накоплением
CoMACRus op1,op2
ACC<—op1*op2-ACC
CoMACRus Rwn,Rwm
CoMACRus Rwn,[Rwm*]
CoMACRus [IDXi*],[Rwm*]
Умножение с накоплением и округлением результата
CoMACsu op1,op2,rnd
ACC<—ACC+op1*op2+00008000h
CoMACsu Rwn,Rwm,rnd
CoMACsu Rwn,[Rwm*],rnd
CoMACsu [IDXi*],[Rwm*],rnd
Умножение с накоплением
CoMACsu op1,op2
ACC<—ACC+op1*op2
CoMACsu Rwn,Rwm
CoMACsu Rwn,[Rwm*]
CoMACsu [IDXi*],[Rwm*]
Умножение с накоплением
CoMACsu- op1,op2
ACC<—ACC-op1*op2
CoMACsu- Rwn,Rwm
CoMACsu- Rwn,[Rwm*]
CoMACsu- [IDXi*],[Rwm*]
Умножение с накоплением и округлением результата
CoMACu op1,op2,rnd
ACC<—ACC+op1*op2+00008000h
CoMACu Rwn,Rwm,rnd
CoMACu Rwn,[Rwm*],rnd
CoMACu [IDXi*],[Rwm*],rnd
Умножение с накоплением
CoMACu op1,op2
ACC<—ACC+op1*op2
CoMACu Rwn,Rwm
CoMACu Rwn,[Rwm*]
CoMACu [IDXi*],[Rwm*]
Умножение с накоплением
CoMACu- op1,op2
ACC<—ACC-op1*op2
CoMACu- Rwn,Rwm
CoMACu- Rwn,[Rwm*]
CoMACu- [IDXi*],[Rwm*]
Умножение с накоплением и округлением результата
CoMACus op1,op2,rnd
ACC<—ACC+op1*op2+00008000h
CoMACus Rwn,Rwm,rnd
CoMACus Rwn,[Rwm*],rnd
CoMACus [IDXi*],[Rwm*],rnd
Умножение с накоплением
CoMACus op1,op2
ACC<—ACC+op1*op2
CoMACus Rwn,Rwm
CoMACus Rwn,[Rwm*]
CoMACus [IDXi*],[Rwm*]
Умножение с накоплением
CoMACus- op1,op2
ACC<—ACC-op1*op2
CoMACus- Rwn,Rwm
CoMACus- Rwn,[Rwm*]
CoMACus- [IDXi*],[Rwm*]
Умножение с округлением результата
CoMUL op1,op2,rnd
ACC<—op1*op2+00008000h
CoMUL Rwn,Rwm,rnd
CoMUL Rwn,[Rwm*],rnd
CoMUL [IDXi*],[Rwm*],rnd
Умножение
CoMUL op1,op2
ACC<—op1*op2
CoMUL Rwn,Rwm
CoMUL Rwn,[Rwm*]
CoMUL [IDXi*],[Rwm*]
Умножение
CoMUL- op1,op2
ACC<—(-op1*op2)
CoMUL- Rwn,Rwm
CoMUL- Rwn,[Rwm*]
CoMUL- [IDXi*],[Rwm*]
Умножение с округлением результата
CoMULsu op1,op2,rnd
ACC<—op1*op2+00008000h
CoMULsu Rwn,Rwm,rnd
CoMULsu Rwn,[Rwm*],rnd
CoMULsu [IDXi*],[Rwm*],rnd
Умножение
CoMULsu op1,op2
ACC<—op1*op2
CoMULsu Rwn,Rwm
CoMULsu Rwn,[Rwm*]
CoMULsu [IDXi*],[Rwm*]
Умножение
CoMULsu- op1,op2
ACC<—(-op1*op2)
CoMULsu- Rwn,Rwm
CoMULsu- Rwn,[Rwm*]
CoMULsu- [IDXi*],[Rwm*]
Умножение с округлением результата
CoMULu op1,op2,rnd
ACC<—op1*op2+00008000h
CoMULu Rwn,Rwm,rnd
CoMULu Rwn,[Rwm*],rnd
CoMULu [IDXi*],[Rwm*],rnd
Умножение
CoMULu op1,op2
ACC<—op1*op2
CoMULu Rwn,Rwm
CoMULu Rwn,[Rwm*]
CoMULu [IDXi*],[Rwm*]
Умножение
CoMULu- op1,op2
ACC<—(-op1*op2)
CoMULu- Rwn,Rwm
CoMULu- Rwn,[Rwm*]
CoMULu- [IDXi*],[Rwm*]
Умножение с округлением результата
CoMULus op1,op2,rnd
ACC<—op1*op2+00008000h
CoMULus Rwn,Rwm,rnd
CoMULus Rwn,[Rwm*],rnd
CoMULus [IDXi*],[Rwm*],rnd
Умножение
CoMULus op1,op2
ACC<—op1*op2
CoMULus Rwn,Rwm
CoMULus Rwn,[Rwm*]
CoMULus [IDXi*],[Rwm*]
Умножение
CoMULus- op1,op2
ACC<—(-op1*op2)
CoMULus- Rwn,Rwm
CoMULus- Rwn,[Rwm*]
CoMULus- [IDXi*],[Rwm*]
Операции сравнения
Сравнение регистров
CoCMP op1,op2
ACC<->(op2||op1)
CoCMP Rwn,Rwm
CoCMP Rwn,[Rwm*]
CoCMP [IDXi*],[Rwm*]
Максимум
CoMAX op1,op2
ACC<—max(ACC, op2||op1)
CoMAX Rwn,Rwm
CoMAX Rwn,[Rwm*]
CoMAX [IDXi*],[Rwm*]
Минимум
CoMIN op1,op2
ACC<—min(ACC, op2||op1)
CoMIN Rwn,Rwm
CoMIN Rwn,[Rwm*]
CoMIN [IDXi*],[Rwm*]
Арифметический сдвиг вправо с округлением
CoASHR op1,rnd
ACC<—(ACC>>>op1)+00008000h
CoASHR #data5,rnd
CoASHR Rwn,rnd
CoASHR [Rwm*],rnd
Арифметический сдвиг вправо
CoASHR op1
ACC<—(ACC>>>op1)
CoASHR #data5
CoASHR Rwn
CoASHR [Rwm*]
Сдвиг влево
CoSHL op1
ACC<—(ACC<<op1)
CoSHL #data5
CoSHL Rwn
CoSHL [Rwm*]
Сдвиг вправо
CoSHR op1
ACC<—(ACC>>op1)
CoSHR #data5
CoSHR Rwn
CoSHR [Rwm*]
Пересылка данных
Пересылка данных
CoMOV op1,op2
op1<—op2
CoMOV [IDXi*],[Rwm*]
Сохранение регистров сопроцессора
CoSTORE op1,op2
op1<—op2
CoSTORE Rwn,CoReg
CoSTORE [Rwn*],CoReg
Вспомогательные операции
Пустая операция
CoNOP
Модификация указателей
CoNOP [IDXi*],[Rwm*]
CoNOP [IDXi*]
CoNOP [Rwm*]Добавить блок