Пр о ц е с с о р TMS 3 2 0C4 x
172
ADDF
∗
++AR0, R0
; R0 + P
1
→
R0
MPYF
R3, R0
; gR0
→
R0
ADDF
∗
++AR0, R3, R1
; Q
1
+ g
→
R1
MPYF
R3, R1
; gR1
→
R1
ADDF
∗
++AR0, R1
; R1 + Q
0
→
R1
RCPF
R1, R10
; v[0] = первое приближение 1/q
MPYF
R10, R1, R8
; R8 = qv[0]
SUBRF
2.0, R8
; R8 = 2.0 – qv[0]
MPYF
R8, R10
; R10 = v[1] = v[0](2.0 – qv[0])
MPYF
R10, R1, R8
; R8 = qv[1]
SUBRF
2.0, R8
; R8 = 2.0 – qv[1]
MPYF
R8, R10, R1
; R1 = v[2] = v[1](2.0 – qv[1])
RND
R1
MPYF
R1, R0
; RES = p(1/q)
MPYF
R4, R0
; XR0
→
R0
ADDF
R4, R0
; RES = R0 + X
ADDF
∗
++AR0(IR1), R0
; RES + a[ IR1 ]
→
R0
BD
R11
; возврат из подпрограммы
NEGF
R0, R1
; – RES
→
R1
POPF
R2
; x
→
R2
LDFN
R1, R0
; если x < 0, RES = –RES
.data
ASIN_ADR: .word
ASIN
ASIN
.float
1.0
.float
–0.504400557
; P
2
.float
0.933935835
: P
1
.float
–0.554846723e+1
; Q
1
.float
0.560363004e+1
; Q
0
.float
0.0
; a[ 0 ]
.float
1.570796371
; a[ 1 ] =
π
/2
.end
Пример Д.9. Программа вычисления
arccos
(x)
; Регистры на входе:
R0 – аргумент x
; Регистры на выходе:
R0 – значение функции arccos(x)
; Используемые регистры:
R1, R2, R3, R4, R8, R10, AR0, IR1
; Вызов
LAJ Arccos
; Память: код
55 слов
;
константы
10 слов
; Время выполнения
68 циклов ( 2.72 мкс)