Пр о ц е с с о р TMS 3 2 0C4 x
169
ADDF
AR0++, R2
; a
5
+ R2
R2
MPYF
R3, R2
; qR2
R2
ADDF
AR0++, R2
; a
3
+ R2
R2
MPYF
R3, R2
; qR2
R2
MPYF
R0, R2
; f R2
R2
BD
R11
; возврат из подпрограммы
ADDF
R0, R2
; cos(x) = f + R2
FLOAT
AR1, R1
; sign
R1
MPYF
R2, R1, R0
; cos(x)
sign
R0
.data
COS_ADR
.word
COS
COS
.float
1.570796326794896
;
π
/2
.float
0.318309886183790
; 1/
π
.float
3.140625
; C
1
.float
9.67653589793e–4
; C
2
(C
1
+ C
2
=
π
)
.float
0.2601903036e–5
; a
9
.float
–0.1980741872e–3
; a
7
.float
0.8333025139e–2
; a
5
.float
–0.1666665668
; a
3
.end
Пример Д.6. Программа вычисления
tg
(x)
; Регистры на входе:
R0 – аргумент x
; Регистры на выходе:
R0 – значение функции tg(x)
; Используемые регистры:
R1, R2, R3, R5, R6, AR0
; Вызов
LAJ Tangent
; Память: код
34 слова
;
константы
7 слов
; Время выполнения
39 циклов ( 1.56 мкс)
.global
Tangent
Tangent:
LDPK
TAN_ADR
; установка указателя DP
LDF
R0, R1
; x
R1
LDI
@TAN_ADR, AR0
; загрузка адреса констант в AR0
MPYF
AR0++, R1, R0
; x(2/
π
)
R0
ADDF
0.5, R0
FIX
R0, R6
; N = целое от R0
FLOAT
R6, R2
; X
n
= ПТ от N
; Вычисление полиномов
P(4)
и
Q(4)
MPYF
AR0++, R2, R0
; C
5
X
n
R0
I...,159,160,161,162,163,164,165,166,167,168 170,171,172,173,174,175,176,177,178,179,...186