Пр о ц е с с о р TMS 3 2 0C4 x
166
Пример Д.3. Программа перестановки элементов комплексного массива
данных
; Элементы входного массива Re[0]Im[0] и Re[1]Im[1] меняются местами
; Элемент Re[0]Im[0] адресуется указателем AR1 линейно
; Элемент Re[1]Im[1] адресуется указателем AR2 с использованием
; бит-реверсивной адресации.
; Если адрес в AR1 больше адреса в AR2, перестановка не производится
; Память: код
17 слов
;
входной массив
2N слов
; Время выполнения
9 + 15N/2
.version
40
.ref
_INPUT
.global
BITREV
.data
Const
.word
_INPUT
; адрес входного массива
.word
64
.text
BITREV LDPK
Const
LDI
@Const+1, IR0
; N
→
IR0
LDI
@Const, AR5
; адрес входного массива
LDI
AR5, AR1
SUBI
2, IR0, RC
RPTBD
BITR
LDI
AR1, AR2
NOP
∗
AR1++(2)
NOP
∗
AR2++(IR0)B
CMPI
AR1, AR2
; начало блока повторений
BGEAT
NEXT
LDF
∗
AR1, R0
; Re[0]
→
R0
||
LDF
∗
AR2, R1
; Re[1]
→
R1
STF
R0,
∗
AR2
; Re[0]
→
Re[1]
||
STF
R1,
∗
AR1
; Re[1]
→
Re[0]
LDF
∗
+AR1(1), R0
; Im[0]
→
R0
||
LDF
∗
+AR2(1), R1
; Im[1]
→
R1
STF
R1,
∗
+AR1(1)
; Im[0]
→
Im[1]
||
STF
R0,
∗
+AR2(1)
; Im[1]
→
Im[0]
NEXT
NOP
∗
AR1++(2)
BITR
NOP
∗
AR2++(IR0)B
.end