⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jpeginit.asm

📁 利用C6000DSP实现对图像的JPEG压缩代码
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;** --------------------------------------------------------------------------*
L5:    
	.line	45
           MVK     .S1     0xa,A3            ; |150| 
;** --------------------------------------------------------------------------*
L6:    
	.line	52
           B       .S2     B3                ; |157| 
           MV      .D1     A3,A4             ; |150| 
           NOP             4
           ; BRANCH OCCURS                   ; |157| 
	.endfunc	157,000000000h,0


	.sect	".text"
	.global	_BuildVLITable
	.sym	_BuildVLITable,_BuildVLITable, 32, 2, 0
	.func	90

;******************************************************************************
;* FUNCTION NAME: _BuildVLITable                                              *
;*                                                                            *
;*   Regs Modified     : A0,A1,A3,A4,A5,A6,B0,B1,B2,B3,B4,B5,SP               *
;*   Regs Used         : A0,A1,A3,A4,A5,A6,B0,B1,B2,B3,B4,B5,DP,SP            *
;*   Local Frame Size  : 0 Args + 0 Auto + 4 Save = 4 byte                    *
;******************************************************************************
_BuildVLITable:
;** --------------------------------------------------------------------------*
	.line	2
	.sym	_i,6, 3, 4, 16
	.sym	_i,6, 3, 4, 16
           STW     .D2T2   B3,*SP--(8)       ; |91| 
	.line	5
           LDW     .D2T2   *+DP(_DC_MAX_QUANTED),B2 ; |94| 
           NOP             4
           CMPGT   .L2     B2,0,B0           ; |94| 
   [!B0]   B       .S1     L8                ; |94| 
           NOP             5
           ; BRANCH OCCURS                   ; |94| 
;** --------------------------------------------------------------------------*
	.line	7
	.line	5
           ZERO    .D1     A6                ; |94| 
;*----------------------------------------------------------------------------*
;*   SOFTWARE PIPELINE INFORMATION
;*      Disqualified loop: loop contains a call
;*----------------------------------------------------------------------------*
L7:    
	.line	7
           B       .S1     _ComputeVLI       ; |96| 
           MVKL    .S2     RL0,B3            ; |96| 
           MVKH    .S2     RL0,B3            ; |96| 
           MV      .D1     A6,A4             ; |96| 
           NOP             2
RL0:       ; CALL OCCURS                     ; |96| 
           LDW     .D2T1   *+DP(_pVLITAB),A0 ; |96| 
           NOP             4
           STB     .D1T1   A4,*+A0[A6]       ; |96| 
	.line	8
           SUB     .D2     B2,1,B2           ; |97| 
   [ B2]   B       .S1     L7                ; |97| 
           ADD     .D1     1,A6,A0           ; |97| 
           EXT     .S1     A0,16,16,A6       ; |97| 
           NOP             3
           ; BRANCH OCCURS                   ; |97| 
;** --------------------------------------------------------------------------*
L8:    
	.line	10
           LDH     .D2T1   *+DP(_DC_MIN_QUANTED),A6 ; |99| 
           NOP             4
           CMPLT   .L1     A6,0,A1           ; |99| 
   [!A1]   B       .S1     L10               ; |99| 
           NOP             5
           ; BRANCH OCCURS                   ; |99| 
;*----------------------------------------------------------------------------*
;*   SOFTWARE PIPELINE INFORMATION
;*      Disqualified loop: loop contains a call
;*----------------------------------------------------------------------------*
L9:    
	.line	12
           B       .S1     _ComputeVLI       ; |101| 
           MVKL    .S2     RL2,B3            ; |101| 
           MVKH    .S2     RL2,B3            ; |101| 
           MV      .D1     A6,A4             ; |101| 
           NOP             2
RL2:       ; CALL OCCURS                     ; |101| 
           LDW     .D2T1   *+DP(_pVLITAB),A0 ; |101| 
           NOP             4
           STB     .D1T1   A4,*+A0[A6]       ; |101| 
	.line	13
           ADD     .D1     1,A6,A0           ; |102| 
           EXT     .S1     A0,16,16,A6       ; |102| 
           CMPLT   .L1     A6,0,A1           ; |102| 
   [ A1]   B       .S1     L9                ; |102| 
           NOP             5
           ; BRANCH OCCURS                   ; |102| 
;** --------------------------------------------------------------------------*
L10:    
	.line	14
           LDW     .D2T2   *++SP(8),B3       ; |103| 
           NOP             4
           B       .S2     B3                ; |103| 
           NOP             5
           ; BRANCH OCCURS                   ; |103| 
	.endfunc	103,000080000h,8


	.sect	".text"
	.global	_BuildSTDHuffTab
	.sym	_BuildSTDHuffTab,_BuildSTDHuffTab, 32, 2, 0
	.func	159

;******************************************************************************
;* FUNCTION NAME: _BuildSTDHuffTab                                            *
;*                                                                            *
;*   Regs Modified     : A0,A1,A3,A5,A7,A8,B0,B1,B4,B5,B6                     *
;*   Regs Used         : A0,A1,A3,A4,A5,A6,A7,A8,B0,B1,B3,B4,B5,B6            *
;*   Local Frame Size  : 0 Args + 0 Auto + 0 Save = 0 byte                    *
;******************************************************************************
_BuildSTDHuffTab:
;** --------------------------------------------------------------------------*
	.line	2
	.sym	_nrcodes,4, 28, 17, 32
	.sym	_stdTab,20, 28, 17, 32
	.sym	_huffCode,6, 24, 17, 32, _tagHUFFCODE
	.sym	_huffCode,6, 24, 4, 32, _tagHUFFCODE
	.sym	_stdTab,0, 28, 4, 32
	.sym	_nrcodes,4, 28, 4, 32
	.sym	_i,7, 4, 4, 32
	.sym	_j,5, 4, 4, 32
	.sym	_k,16, 4, 4, 32
	.sym	_code,20, 13, 4, 16
           MV      .S1X    B4,A0
	.line	8
           MVK     .S2     0x10,B1           ; |166| 
	.line	5
           ZERO    .D2     B0                ; |163| 
	.line	6
           ZERO    .D2     B4                ; |164| 
	.line	8
           MVK     .S1     0x1,A7            ; |166| 
;** --------------------------------------------------------------------------*
;**   BEGIN LOOP L11
;** --------------------------------------------------------------------------*
L11:    
	.line	10
           LDBU    .D1T1   *+A7[A4],A1       ; |168| 
           NOP             4
   [!A1]   B       .S1     L13               ; |168| 
   [ A1]   MVK     .S1     0x1,A5            ; |168| 
   [ A1]   ADD     .L1X    B0,A0,A8
           NOP             3
           ; BRANCH OCCURS                   ; |168| 
;*----------------------------------------------------------------------------*
;*   SOFTWARE PIPELINE INFORMATION
;*
;*      Loop source line               : 168
;*      Loop opening brace source line : 169
;*      Loop closing brace source line : 174
;*      Known Minimum Trip Count         : 1
;*      Known Max Trip Count Factor      : 1
;*      Loop Carried Dependency Bound(^) : 25
;*      Unpartitioned Resource Bound     : 5
;*      Partitioned Resource Bound(*)    : 6
;*      Resource Partition:
;*                                A-side   B-side
;*      .L units                     0        1     
;*      .S units                     1        1     
;*      .D units                     3        2     
;*      .M units                     1        1     
;*      .X cross paths               0        2     
;*      .T address paths             3        2     
;*      Long read paths              1        1     
;*      Long write paths             0        0     
;*      Logical  ops (.LS)           0        1     (.L or .S unit)
;*      Addition ops (.LSD)         12        5     (.L or .S or .D unit)
;*      Bound(.L .S .LS)             1        2     
;*      Bound(.L .S .D .LS .LSD)     6*       4     
;*
;*      Searching for software pipeline schedule at ...
;*         ii = 25 Too many predicates live on one side
;*                   Regs Live Always   :  4/3  (A/B-side)
;*                   Max Regs Live      : 10/7 
;*                   Max Cond Regs Live :  3/1 
;*         ii = 25 Too many predicates live on one side
;*                   Regs Live Always   :  4/3  (A/B-side)
;*                   Max Regs Live      : 11/8 
;*                   Max Cond Regs Live :  3/1 
;*         ii = 25 Too many predicates live on one side
;*                   Regs Live Always   :  4/3  (A/B-side)
;*                   Max Regs Live      : 11/7 
;*                   Max Cond Regs Live :  3/1 
;*         ii = 26 Too many predicates live on one side
;*                   Regs Live Always   :  4/3  (A/B-side)
;*                   Max Regs Live      : 10/7 
;*                   Max Cond Regs Live :  3/1 
;*         ii = 26 Too many predicates live on one side
;*                   Regs Live Always   :  4/3  (A/B-side)
;*                   Max Regs Live      : 11/8 
;*                   Max Cond Regs Live :  3/1 
;*         ii = 26 Too many predicates live on one side
;*                   Regs Live Always   :  4/3  (A/B-side)
;*                   Max Regs Live      : 11/7 
;*                   Max Cond Regs Live :  3/1 
;*         ii = 27 Too many predicates live on one side
;*                   Regs Live Always   :  4/3  (A/B-side)
;*                   Max Regs Live      : 10/7 
;*                   Max Cond Regs Live :  3/1 
;*         ii = 27 Too many predicates live on one side
;*                   Regs Live Always   :  4/3  (A/B-side)
;*                   Max Regs Live      : 11/8 
;*                   Max Cond Regs Live :  3/1 
;*         ii = 27 Too many predicates live on one side
;*                   Regs Live Always   :  4/3  (A/B-side)
;*                   Max Regs Live      : 11/7 
;*                   Max Cond Regs Live :  3/1 
;*      Disqualified loop: did not find schedule
;*----------------------------------------------------------------------------*
L12:    
	.line	12
           LDBU    .D1T1   *A8,A3            ; |170| 
           NOP             4
           MPYSU   .M2X    6,A3,B5           ; |170| 
           NOP             1
           ADD     .S2X    A6,B5,B5          ; |170| 
           STH     .D2T2   B4,*B5            ; |170| 
	.line	13
           LDBU    .D1T1   *A8++,A3          ; |171| 
           NOP             4
           MPYSU   .M1     6,A3,A3           ; |171| 
           NOP             1
           ADD     .D1     A6,A3,A3          ; |171| 
           STB     .D1T1   A7,*+A3(2)        ; |171| 
	.line	14
           ADD     .D2     1,B0,B0           ; |172| 
	.line	15
           ADD     .D2     1,B4,B4           ; |173| 
           EXTU    .S2     B4,16,16,B4       ; |173| 
	.line	16
           LDBU    .D1T1   *+A7[A4],A3       ; |174| 
           ADD     .D1     1,A5,A5           ; |174| 
           NOP             3
           CMPLT   .L1     A3,A5,A1          ; |174| 
   [!A1]   B       .S1     L12               ; |174| 
           NOP             5
           ; BRANCH OCCURS                   ; |174| 
;** --------------------------------------------------------------------------*
L13:    
	.line	17
           EXTU    .S2     B4,17,16,B4
	.line	18
           SUB     .D2     B1,1,B1           ; |176| 
   [ B1]   B       .S1     L11               ; |176| 
           ADD     .D1     1,A7,A7           ; |176| 
           NOP             4
           ; BRANCH OCCURS                   ; |176| 
;** --------------------------------------------------------------------------*
	.line	20
           CMPGT   .L2     B0,0,B1           ; |178| 
   [!B1]   B       .S1     L17               ; |178| 
   [ B1]   ADD     .D1     4,A6,A3
           NOP             4
           ; BRANCH OCCURS                   ; |178| 
;** --------------------------------------------------------------------------*
	.line	22
           MVC     .S2     CSR,B6
           AND     .S2     -2,B6,B5

           MV      .L2X    A3,B4
||         MVC     .S2     B5,CSR            ; interrupts off

;*----------------------------------------------------------------------------*
;*   SOFTWARE PIPELINE INFORMATION
;*
;*      Loop source line               : 178
;*      Loop opening brace source line : 179
;*      Loop closing brace source line : 181
;*      Known Minimum Trip Count         : 1
;*      Known Max Trip Count Factor      : 1
;*      Loop Carried Dependency Bound(^) : 7
;*      Unpartitioned Resource Bound     : 1
;*      Partitioned Resource Bound(*)    : 1
;*      Resource Partition:
;*                                A-side   B-side
;*      .L units                     0        0     
;*      .S units                     1*       0     
;*      .D units                     1*       1*    
;*      .M units                     0        0     
;*      .X cross paths               0        1*    
;*      .T address paths             1*       1*    
;*      Long read paths              0        1*    
;*      Long write paths             0        0     
;*      Logical  ops (.LS)           0        1     (.L or .S unit)
;*      Addition ops (.LSD)          0        1     (.L or .S or .D unit)
;*      Bound(.L .S .LS)             1*       1*    
;*      Bound(.L .S .D .LS .LSD)     1*       1*    
;*
;*      Searching for software pipeline schedule at ...
;*         ii = 7  Schedule found with 1 iterations in parallel
;*      done
;*
;*      Collapsed epilog stages     : 0
;*      Collapsed prolog stages     : 0
;*
;*      Minimum safe trip count     : 1
;*----------------------------------------------------------------------------*
L14:    ; PIPED LOOP PROLOG
;** --------------------------------------------------------------------------*
L15:    ; PIPED LOOP KERNEL

   [ B0]   SUB     .D2     B0,1,B0           ; |181| 
||         LDBU    .D1T1   *A0++,A3          ;  ^ |180| 

   [ B0]   B       .S1     L15               ; |181| 
           NOP             3
           MV      .S2X    A3,B5             ;  ^ Define a twin register
           STH     .D2T2   B5,*B4++(6)       ;  ^ |180| 
;** --------------------------------------------------------------------------*
L16:    ; PIPED LOOP EPILOG
;** --------------------------------------------------------------------------*
           MVC     .S2     B6,CSR            ; interrupts on
;** --------------------------------------------------------------------------*
L17:    
	.line	25
           B       .S2     B3                ; |183| 
           NOP             5
           ; BRANCH OCCURS                   ; |183| 
	.endfunc	183,000000000h,0


;******************************************************************************
;* MARK THE END OF THE SCALAR INIT RECORD IN CINIT:C                          *
;******************************************************************************
CIR:	.sect	".cinit:c"
;******************************************************************************
;* UNDEFINED EXTERNAL REFERENCES                                              *
;******************************************************************************
	.global	_pVLITAB

;******************************************************************************
;* TYPE INFORMATION                                                           *
;******************************************************************************
	.sym	_BYTE, 0, 12, 13, 8
	.sym	_WORD, 0, 13, 13, 16
	.stag	_tagHUFFCODE, 48
	.member	_code, 0, 13, 8, 16
	.member	_length, 16, 12, 8, 8
	.member	_val, 32, 13, 8, 16
	.eos
	.sym	_HUFFCODE, 0, 8, 13, 48,_tagHUFFCODE

⌨️ 快捷键说明

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