mtrans.asm

来自「CCS3.3自带的TI 5400系列DSP的dsplib文件。文档说明可以在TI」· 汇编 代码 · 共 78 行

ASM
78
字号
;***********************************************************
; Version 2.20.01                                           
;***********************************************************
;****************************************************************
;  Function:	mtrans
;  Description: matrix transpose implementation
;
;  Copyright Texas instruments Inc, 1998
;----------------------------------------------------------------
;  Revision History:
;  1.00, A. Aboagye, 8/31/98 - Original release. Started from
;				   summer coop code
;****************************************************************
                .mmregs

	.if __far_mode
OFFSET	.set 1
	.else
OFFSET	.set 0
	.endif

                .text
                .def _mtrans

_mtrans:
        PSHM    AR1
        PSHM    ST0                                 ; 1 cycle
        PSHM    ST1                                 ; 1 cycle
        RSBX    OVA                                 ; 1 cycle
        RSBX    OVB                                 ; 1 cycle

        FRAME   -1
        STLM    A,AR2                           ; AR2 -> input matrix
        STL     A,*SP(0)                        ; SP(0) = input matrix ptr
	MVDK	*SP(7+OFFSET), AR4		; AR4 -> output matrix

; Set up for transpose

        MVDK    *SP(0),AR2                      ; AR2 -> elements
        LD      *SP(5+OFFSET),A
	STLM	A, AR0
        SUB     #1,A
        STLM    A,BRC                           ; Init input row counter

        LD      *SP(6+OFFSET),A
        SUB     #1,A
        STL     A,*SP(6+OFFSET)			; SP(6+OFFSET) = input row size - 1

; Transpose using 2 nested loops
        RPTB    tra1end

tra1	MVDK    *SP(6+OFFSET),AR1               ; Init input element counter
        MVMM    AR4, AR5                        ; AR5 -> an output element
	MAR	*AR4+

tra2    MVDD    *AR2+,*AR5
	MAR	*AR5+0
	BANZ    tra2,*AR1-
tra1end	NOP
        FRAME   1

	LD	#0, A                   ; 1 cycle
	XC	1, AOV                  ; 1 cycle
	LD	#1, A                   ; 1 cycle

        POPM    ST1
        POPM    ST0
        POPM    AR1

	.if	__far_mode
	FRET
	.else
	RET
	.endif

;end of file. please do not remove. it is left here to ensure that no lines of code are removed by any editor

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?