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

📄 p_parity_asm.asm

📁 g.729汇编手工优化
💻 ASM
字号:
	.mmregs
FP	.set	AR7

	.sect	".text"
	.global	_Parity_Pitch
;----------------------------------------------------------------------
;  18 | Word16 Parity_Pitch(    /* output: parity bit (XOR of 6 MSB bits)    */
;  19 | Word16 pitch_index   /* input : index for which parity to compute */   
;  20 | )                                                                      
;----------------------------------------------------------------------

_Parity_Pitch:

        PSHM      AR1
        PSHM      AR6
        FRAME     #-5
;----------------------------------------------------------------------
;  24 | temp = shr(pitch_index, 1);                                            
;----------------------------------------------------------------------
		SSBX      SXM
		SSBX      OVM
		NOP
        ;RSBX      FRCT
        ;RSBX      OVM
        ;ST        #1,*SP(0)             ; |24| 
        ;CALL      #_crshft              ; |24| 
        SFTA       A,-1
;----------------------------------------------------------------------
;  26 | sum = 1;                                                               
;  27 | for (i = 0; i <= 5; i++) {                                             
;----------------------------------------------------------------------
        STM       #1,AR1
        STM       #6,AR6
L1:    
;----------------------------------------------------------------------
;  28 | temp = shr(temp, 1);                                                   
;  29 | bit = temp & (Word16)1;                                                
;----------------------------------------------------------------------
        ;RSBX      FRCT
        ;RSBX      OVM
        ;ST        #1,*SP(0)             ; |28| 
        ;CALL      #_crshft              ; |28| 
        SFTA       A,-1
;----------------------------------------------------------------------
;  30 | sum = add(sum, bit);                                                   
;----------------------------------------------------------------------
        ;RSBX      OVM
        ;SSBX      SXM
        LD        *(AR1),16,B           ; |30| 
        DST       B,*SP(2)              ; |30| 
        AND       #1,A,B                ; |30| 
        STLM      B,AR1
        DLD       *SP(2),B              ; |30| 
        ;SSBX      OVM
        ADD       *(AR1),16,B,B         ; |30| 
        SFTA      B,-16,B               ; |30| 
        STLM      B,AR1

;----------------------------------------------------------------------
;  32 | sum = sum & (Word16)1;                                                 
;----------------------------------------------------------------------
        BANZ      L1,*+AR6(-1)          ; |31| 
;----------------------------------------------------------------------
;  35 | return sum;                                                            
;----------------------------------------------------------------------
        LDM       AR1,A
        AND       #1,A,A                
        ANDM      #-833,*(ST1)          
        ANDM      #-4,*(PMST)           
        FRAME     #5                   
        POPM      AR6                   
        POPM      AR1                   
        RET       




	.sect	".text"
	.global	_Check_Parity_Pitch
;----------------------------------------------------------------------
;  42 | Word16  Check_Parity_Pitch( /* output: 0 = no error, 1= error */       
;  43 | Word16 pitch_index,       /* input : index of parameter     */         
;  44 | Word16 parity             /* input : parity bit             */         
;  45 | )                                                                      
;----------------------------------------------------------------------
_Check_Parity_Pitch:

        PSHM      AR1
        PSHM      AR6
        PSHM      AR7
        FRAME     #-4
        NOP
;----------------------------------------------------------------------
;  47 | Word16 temp, sum, i, bit;                                              
;----------------------------------------------------------------------
        MVDK      *SP(8),*(AR7)
;----------------------------------------------------------------------
;  49 | temp = shr(pitch_index, 1);                                            
;----------------------------------------------------------------------
		SSBX      SXM
		SSBX      OVM
		NOP
        ;RSBX      FRCT
        ;RSBX      OVM
        ;ST        #1,*SP(0)             ; |49| 
        ;CALL      #_crshft              ; |49| 
        SFTA      A,-1
;----------------------------------------------------------------------
;  51 | sum = 1;                                                               
;  52 | for (i = 0; i <= 5; i++) {                                             
;----------------------------------------------------------------------
        STM       #1,AR1
        STM       #6,AR6
L2:    
;----------------------------------------------------------------------
;  53 | temp = shr(temp, 1);                                                   
;  54 | bit = temp & (Word16)1;                                                
;----------------------------------------------------------------------
        ;RSBX      FRCT
        ;RSBX      OVM
        ;ST        #1,*SP(0)             ; |53| 
        ;CALL      #_crshft              ; |53| 
        SFTA       A,-1
;----------------------------------------------------------------------
;  55 | sum = add(sum, bit);                                                   
;----------------------------------------------------------------------
        ;RSBX      OVM
        ;SSBX      SXM
        LD        *(AR1),16,B           ; |55| 
        DST       B,*SP(2)              ; |55| 
        AND       #1,A,B                ; |55| 
        STLM      B,AR1
        DLD       *SP(2),B              ; |55| 
        ;SSBX      OVM
        ADD       *(AR1),16,B,B         ; |55| 
        SFTA      B,-16,B               ; |55| 
        STLM      B,AR1

        BANZ      L2,*+AR6(-1)          ; |56| 

;----------------------------------------------------------------------
;  57 | sum = add(sum, parity);                                                
;  58 | sum = sum & (Word16)1;                                                 
;----------------------------------------------------------------------
        ;RSBX      OVM
        LD        *(AR1),16,A           ; |57| 
        ;SSBX      OVM
        ADD       *(AR7),16,A,A         ; |57| 
        SFTA      A,-16,A               ; |57| 
        AND       #1,A,A                ; |57| 

;----------------------------------------------------------------------
;  60 | return sum;                                                            
;----------------------------------------------------------------------

        ANDM      #-833,*(ST1)         
        ANDM      #-4,*(PMST)          
        FRAME     #4                    
        POPM      AR7                   
        POPM      AR6                   
        POPM      AR1                   
        RET       

⌨️ 快捷键说明

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