📄 dspjpeg.asm
字号:
SHL .S2 B9,16,B9 ; |509|
ADD .S2X A0,B9,B9 ; |509|
.line 14
LDW .D2T2 *+B4(20),B5 ; |510|
|| LDH .D1T1 *+A4(10),A0 ; |510|
NOP 4
MPYLH .M1X B5,A0,A3 ; |510|
|| MPYLH .M2X A0,B5,B0 ; |510|
MPYU .M1X B5,A0,A0 ; |510|
ADD .S2X A3,B0,B0 ; |510|
SHL .S2 B0,16,B0 ; |510|
ADD .S2X A0,B0,B0 ; |510|
.line 15
LDH .D1T1 *+A4(12),A0 ; |511|
|| LDW .D2T2 *+B4(24),B5 ; |511|
NOP 4
MPYLH .M2X B5,A0,B2 ; |511|
MPYLH .M2X A0,B5,B1 ; |511|
NOP 1
ADD .D2 B2,B1,B5 ; |511|
|| MPYU .M2X B5,A0,B1 ; |511|
SHL .S2 B5,16,B5 ; |511|
ADD .D2 B1,B5,B5 ; |511|
.line 16
LDH .D1T1 *+A4(14),A0 ; |512|
|| LDW .D2T2 *+B4(28),B1 ; |512|
NOP 4
MPYLH .M2X B1,A0,B2 ; |512|
|| MPYLH .M1X A0,B1,A5 ; |512|
MPYU .M1X B1,A0,A3 ; |512|
ADD .S1X B2,A5,A0 ; |512|
SHL .S1 A0,16,A0 ; |512|
ADD .D1 A3,A0,A0 ; |512|
.line 18
LDH .D1T2 *A4,B4 ; |514|
|| LDW .D2T1 *B4,A3 ; |514|
NOP 4
MPYLH .M2X B4,A3,B1 ; |514|
|| MPYLH .M1X A3,B4,A5 ; |514|
MPYU .M1X A3,B4,A3 ; |514|
ADD .S2X A5,B1,B4 ; |514|
SHL .S2 B4,16,B4 ; |514|
ADD .S2X A3,B4,B4 ; |514|
SHR .S2 B4,15,B4 ; |514|
STH .D1T2 B4,*A4 ; |514|
.line 19
SHR .S2 B7,15,B4 ; |515|
STH .D1T2 B4,*+A4(2) ; |515|
.line 20
SHR .S2 B6,15,B4 ; |516|
STH .D1T2 B4,*+A4(4) ; |516|
.line 21
SHR .S2 B8,15,B4 ; |517|
STH .D1T2 B4,*+A4(6) ; |517|
.line 22
SHR .S2 B9,15,B4 ; |518|
STH .D1T2 B4,*+A4(8) ; |518|
.line 23
SHR .S2 B0,15,B4 ; |519|
STH .D1T2 B4,*+A4(10) ; |519|
.line 24
SHR .S2 B5,15,B4 ; |520|
STH .D1T2 B4,*+A4(12) ; |520|
.line 25
SHR .S1 A0,15,A0 ; |521|
STH .D1T1 A0,*+A4(14) ; |521|
.line 36
B .S2 B3 ; |532|
NOP 5
; BRANCH OCCURS ; |532|
.endfunc 532,000000000h,0
.sect ".text"
.global _RLEComp
.sym _RLEComp,_RLEComp, 32, 2, 0
.func 417
;******************************************************************************
;* FUNCTION NAME: _RLEComp *
;* *
;* Regs Modified : A0,A1,A3,A4,A5,A7,A8,B0,B1,B4,B5,B6,B7,B8,B9 *
;* Regs Used : A0,A1,A3,A4,A5,A6,A7,A8,B0,B1,B3,B4,B5,B6,B7,B8,B9, *
;* DP *
;* Local Frame Size : 0 Args + 0 Auto + 0 Save = 0 byte *
;******************************************************************************
_RLEComp:
;** --------------------------------------------------------------------------*
.line 2
.sym _lpbuf,4, 19, 17, 32
.sym _lpOutBuf,20, 24, 17, 32, _tagACSYM
.sym _resultLen,6, 28, 17, 32
.sym _EndFlag,22, 4, 17, 32
.sym _j,21, 4, 4, 32
.sym _zeroNum,3, 12, 4, 8
.sym _lpbuf,4, 19, 4, 32
.sym _lpOutBuf,20, 24, 4, 32, _tagACSYM
.sym _resultLen,6, 28, 4, 32
.sym _EndFlag,22, 4, 4, 32
.line 22
CMPGT .L2 B6,0,B1 ; |438|
[!B1] B .S1 L10 ; |438|
NOP 5
; BRANCH OCCURS ; |438|
;** --------------------------------------------------------------------------*
.line 24
.line 3
ZERO .D1 A3 ; |419|
.line 7
MVC .S2 CSR,B9
ZERO .D2 B5 ; |423|
|| MV .L2 B6,B0
|| AND .S2 -2,B9,B8
MV .L2X A3,B7
|| MV .D2 B4,B6
|| MVC .S2 B8,CSR ; interrupts off
;*----------------------------------------------------------------------------*
;* SOFTWARE PIPELINE INFORMATION
;*
;* Loop source line : 438
;* Loop opening brace source line : 439
;* Loop closing brace source line : 454
;* Known Minimum Trip Count : 1
;* Known Max Trip Count Factor : 1
;* Loop Carried Dependency Bound(^) : 21
;* Unpartitioned Resource Bound : 5
;* Partitioned Resource Bound(*) : 5
;* Resource Partition:
;* A-side B-side
;* .L units 2 0
;* .S units 1 1
;* .D units 4 5*
;* .M units 0 0
;* .X cross paths 1 1
;* .T address paths 5* 3
;* Long read paths 2 2
;* Long write paths 0 0
;* Logical ops (.LS) 2 1 (.L or .S unit)
;* Addition ops (.LSD) 1 4 (.L or .S or .D unit)
;* Bound(.L .S .LS) 3 1
;* Bound(.L .S .D .LS .LSD) 4 4
;*
;* Searching for software pipeline schedule at ...
;* ii = 21 Schedule found with 1 iterations in parallel
;* done
;*
;* Collapsed epilog stages : 0
;* Collapsed prolog stages : 0
;*
;* Minimum safe trip count : 1
;*----------------------------------------------------------------------------*
L7: ; PIPED LOOP PROLOG
;** --------------------------------------------------------------------------*
L8: ; PIPED LOOP KERNEL
CMPLTU .L1 A3,15,A8 ; |440|
|| LDH .D1T1 *++A4,A0 ; ^ |440|
NOP 2
LDW .D2T1 *+DP(_pVLITAB),A7 ; |448|
NOP 1
CMPEQ .L1 A0,0,A7 ; ^ |440|
ADDAW .D2 B6,B5,B8 ; |446|
|| AND .S1 A8,A7,A1 ; ^ |440|
[!A1] STB .D2T2 B7,*B8 ; ^ |446|
[!A1] LDBU .D1T1 *+A7[A0],A5 ; ^ |448|
[!A1] STH .D2T1 A0,*+B8(2) ; |449|
NOP 3
[!A1] STB .D2T1 A5,*+B8(1) ; ^ |448|
[ B0] SUB .D2 B0,1,B0 ; |454|
|| [!A1] LDBU .D1T2 *A6,B4 ; ^ |451|
[ B0] B .S2 L8 ; |454|
[!A1] ZERO .D2 B7 ; |450|
[!A1] MV .S1X B7,A3 ; Define a twin register
ADD .D1 1,A3,A0 ; |442|
[ A1] EXTU .S1 A0,24,24,A3 ; |442|
|| ADD .D2 1,B4,B8 ; ^ |451|
[!A1] ADD .D2 1,B5,B5 ; |452|
|| [ A1] MV .S2X A3,B7 ; Define a twin register
|| [!A1] STB .D1T2 B8,*A6 ; ^ |451|
;** --------------------------------------------------------------------------*
L9: ; PIPED LOOP EPILOG
;** --------------------------------------------------------------------------*
MVC .S2 B9,CSR ; interrupts on
;** --------------------------------------------------------------------------*
L10:
.line 39
B .S2 B3 ; |455|
NOP 5
; BRANCH OCCURS ; |455|
.endfunc 455,000000000h,0
.sect ".text"
.global _BuildSym2
.sym _BuildSym2,_BuildSym2, 40, 2, 0, _tagSYM2
.func 457
;******************************************************************************
;* FUNCTION NAME: _BuildSym2 *
;* *
;* Regs Modified : A0,A1,A3,B0,B4,B5,SP *
;* Regs Used : A0,A1,A3,A4,B0,B3,B4,B5,DP,SP *
;* Local Frame Size : 0 Args + 4 Auto + 0 Save = 4 byte *
;******************************************************************************
_BuildSym2:
;** --------------------------------------------------------------------------*
.line 2
.sym _value,4, 3, 17, 16
.sym _value,4, 3, 4, 16
.sym _Symbol,4, 8, 1, 32, _tagSYM2
SUB .D2 SP,8,SP ; |458|
|| MV .S2X A3,B0 ; |458|
.line 5
LDW .D2T1 *+DP(_pVLITAB),A0 ; |461|
NOP 4
LDBU .D1T1 *+A0[A4],A0 ; |461|
NOP 4
STB .D2T1 A0,*+SP(6) ; |461|
.line 6
ZERO .D2 B4 ; |462|
STH .D2T2 B4,*+SP(4) ; |462|
.line 7
CMPLT .L1 A4,0,A1 ; |463|
.line 13
[ A1] LDBU .D2T2 *+SP(6),B5 ; |469|
[ A1] MVK .S2 (_mask-$bss),B4 ; |469|
[ A1] ADD .D2 DP,B4,B4 ; |469|
NOP 2
[ A1] LDHU .D2T2 *+B4[B5],B4 ; |469|
NOP 4
[ A1] ADD .S1X A4,B4,A0 ; |469|
[ A1] SUB .D1 A0,1,A0 ; |469|
[ A1] STH .D2T1 A0,*+SP(4) ; |469|
.line 9
[!A1] STH .D2T1 A4,*+SP(4) ; |465|
.line 17
ADD .S1X 4,SP,A0 ; |473|
[ B0] LDH .D1T2 *+A0(2),B4 ; |473|
[ B0] LDH .D1T1 *A0,A3 ; |473|
NOP 3
[ B0] STH .D2T2 B4,*+B0(2) ; |473|
[ B0] STH .D2T1 A3,*B0 ; |473|
.line 18
B .S2 B3 ; |474|
ADD .D2 8,SP,SP ; |474|
NOP 4
; BRANCH OCCURS ; |474|
.endfunc 474,000000000h,8
.sect ".text"
.global _ProcessDU
.sym _ProcessDU,_ProcessDU, 32, 2, 0
.func 204
;******************************************************************************
;* FUNCTION NAME: _ProcessDU *
;* *
;* Regs Modified : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,B0,B1, *
;* B2,B3,B4,B5,B6,B7,B8,B9,B10,B11,B12,SP *
;* Regs Used : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,B0,B1, *
;* B2,B3,B4,B5,B6,B7,B8,B9,B10,B11,B12,DP,SP *
;* Local Frame Size : 0 Args + 440 Auto + 32 Save = 472 byte *
;******************************************************************************
_ProcessDU:
;** --------------------------------------------------------------------------*
.line 2
.sym _lpBuf,4, 19, 17, 32
.sym _quantTab,20, 30, 17, 32
.sym _dcHuffTab,6, 24, 17, 32, _tagHUFFCODE
.sym _acHuffTab,22, 24, 17, 32, _tagHUFFCODE
.sym _DC,8, 19, 17, 32
.sym _DC,26, 19, 4, 32
.sym _acHuffTab,11, 24, 4, 32, _tagHUFFCODE
.sym _dcHuffTab,13, 24, 4, 32, _tagHUFFCODE
.sym _quantTab,12, 30, 4, 32
.sym _lpBuf,10, 19, 4, 32
.sym _i,0, 4, 4, 32
.sym _EndBit,2, 4, 4, 32
.sym _diffVal,18, 3, 4, 16
.sym _acLen,4, 12, 1, 8
.sym _sigBuf,16, 51, 1, 1024,, 64
.sym _acSym,144, 56, 1, 2048, _tagACSYM, 64
.sym _huffCode,400, 8, 1, 48, _tagHUFFCODE
.sym _sym,406, 8, 1, 32, _tagSYM2
.sym _huffCode,410, 8, 1, 48, _tagHUFFCODE
.sym _huffCode,416, 8, 1, 48, _tagHUFFCODE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -