mat_mat4.asm
来自「ti公司的dsp常用算法和程序.共有七个文件.C30Fast_FFT,C30FF」· 汇编 代码 · 共 107 行
ASM
107 行
;
; calculates c = a x b
;
; float a[4][4]
; float b[4][4]
; float c[4][4]
;
; void mat_mat4( c, a, b )
;
;
; James M. Patterson
; Texas Instruments
; 370 South North Lake Boulevard
; Altamonte Springs, Florida 32701
;
;
FP .set AR3
.global _mat_mat4
.text
_mat_mat4:
ldi 4, IR0 ;do this first to avoid pipeline conflict
ldi 3, IR1
;
; first, set up the addresses
;
ldi ST, R0 ;save ST
ldi 3, RC ;set repeat counter
or ~2000h, ST ;clear GIE
pop AR2 ;do this to back up SP
pop AR2 ;AR2 points to C vector
pop AR0 ;AR0 points to A matrix
pop AR1 ;AR1 points to B vector
addi 4, SP ;restore the SP
ldi R0, ST ;restore ST register
rptb vector4
mpyf3 *AR0++, *AR1++(IR0), R0
mpyf3 *AR0++, *AR1++(IR0), R1
mpyf3 *AR0++, *AR1++(IR0), R0
|| addf3 R0, R1, R3 ;a[k][2] * b[2][k] -> R0
mpyf3 *AR0--(IR1), *AR1, R0
|| addf3 R0, R3, R3
nop *AR1--(11)
mpyf3 *AR0++, *AR1++(IR0), R0
|| addf3 R0, R3, R3
mpyf3 *AR0++, *AR1++(IR0), R1
mpyf3 *AR0++, *AR1++(IR0), R0
|| addf3 R0, R1, R2
mpyf3 *AR0--(IR1), *AR1, R0
|| addf3 R0, R2, R2
nop *AR1--(11)
mpyf3 *AR0++, *AR1++(IR0), R1
|| addf3 R0, R2, R2
stf R3, *AR2
|| stf R2, *++AR2
nop *AR2++
mpyf3 *AR0++, *AR1++(IR0), R0
mpyf3 *AR0++, *AR1++(IR0), R0
|| addf3 R0, R1, R2
mpyf3 *AR0--(IR1), *AR1, R0
|| addf3 R0, R2, R2
nop *AR1--(11)
mpyf3 *AR0++, *AR1++(IR0), R0
|| addf3 R0, R2, R2
mpyf3 *AR0++, *AR1++(IR0), R1
mpyf3 *AR0++, *AR1++(IR0), R0
|| addf3 R0, R1, R3
mpyf3 *AR0++, *AR1, R0
|| addf3 R0, R3, R3
addf3 R0, R3, R3
stf R2, *AR2
|| stf R3, *++AR2
nop *AR1--(15)
vector4: nop *AR2++
rets ;all done
.end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?