Пр о ц е с с о р TMS 3 2 0C4 x
87
регистры AR4, AR3 и RC. Индексные регистры IR0, IR1 применяются для сме-
щения указателей в процессе вычислений.
Перед вызовом подпрограммы в регистрах AR0, AR1 и AR2 должны быть
записаны адреса начальных элементов массивов
X
,
Y
и
Z
соответственно. Пе-
ременные
N
,
K
и
M
определяют размерности матриц. Для указанных в примере
значений будут перемножаться матрицы:
X
размерностью 12
×
6 и
Y
размерно-
стью
6
×
10, результирующая матрица
Z
будет иметь размерность 12
×
10. При
выполнении подпрограммы
в регистр IR1 будет загружен
полный размер матрицы
X
в
словах (
N
×
K
×
2), а в регистр
IR0 - размер столбца матри-
цы
Y
в словах (
K
×
2), вычис-
ленные
ассемблером.
В
счетчик внешнего цикла
AR4 загружается уменьшен-
ное на единицу число столб-
цов матрицы
Y
, в счетчик
AR3 - уменьшенное на еди-
ницу число строк матрицы
X
, а в счетчик RC - умень-
шенное на единицу число
столбцов матрицы
X
.
Во внутреннем цикле
вычисляется элемент матри-
цы
Z
, после чего указатель
AR0 в матрице
X
устанавли-
вается на первый элемент
следующей строки, а указа-
тель AR1 в матрице
Y
требу-
ется вернуть на начальный
элемент текущего столбца.
Таким образом, в цикле по
счетчику AR3 осуществляет-
ся умножение всех строк
матрицы
X
на столбец мат-
рицы
Y
. По завершении цик-
ла по AR3 указатель AR0
будет находиться за преде-
лами матрицы
X
, поэтому он
возвращается на начальный
нет
нет
Установка счетчика столбцов
Y
в AR4
Установка счетчика строк
X
в AR3
Установка счетчика строк
Y
(или
столбцов
X
) в RC, обнуление R0,
R2{Re(
z
)} и R3{Im(
z
)}
Re(
z
)=R2+Re(
x
)
⋅
Re(
y
)-Im(
x
)
⋅
Im(
y
)
Re(
z
)=R3+Re(
x
)
⋅
Im(
y
)+Im(
x
)
⋅
Re(
y
)
RC - 1
RC
≥
0
да
AR4
≥
0
да
нет
AR3
≥
0
да
Сохранить Re(
z
), Im(
z
), восстановить адрес
текущего столбца матрицы
Y
, AR3-1
Установить адрес следующего столбца
Y
,
установить начальный адрес матрицы
X
,
AR4-1
Рис.2.14. Алгоритм умножения комплексных
матриц