echo.asm

来自「Using DSP/BIOS I/O in Multichannel Syste」· 汇编 代码 · 共 1,261 行 · 第 1/5 页

ASM
1,261
字号
           MVKL    .S2     _trace1,B4        ; |134| 
           MVKH    .S2     _trace1,B4        ; |134| 
           MV      .L1X    B4,A4             ; |134| 

           STW     .D2T2   B5,*+SP(8)        ; |134| 
||         MVKH    .S2     RL14,B3           ; |134| 

RL14:      ; CALL OCCURS                     ; |134| 
	.line	27
;----------------------------------------------------------------------
; 136 | if (SIO_issue(channel->outStream,                                      
; 137 |                           channel->buf,                                
; 138 |                           channel->bufSize,                            
; 139 |                           NULL) < 0) {                                 
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(12),B5       ; |136| 
           MVKL    .S2     RL16,B3           ; |136| 
           ZERO    .L2     B6                ; |136| 
           MVKH    .S2     RL16,B3           ; |136| 
           NOP             1
           LDW     .D2T1   *+B5(4),A4        ; 

           B       .S1     _SIO_issue        ; |136| 
||         MV      .L2     B5,B4             ; |136| 
||         LDW     .D2T1   *+B5(20),A6       ; 

           LDW     .D2T2   *+B4(8),B4        ; 
           NOP             4
RL16:      ; CALL OCCURS                     ; |136| 
           CMPLT   .L1     A4,0,A1           ; 
	.line	31
;----------------------------------------------------------------------
; 140 | return(FALSE);                                                         
;----------------------------------------------------------------------
   [ A1]   B       .S1     L1                ; |140| 
   [ A1]   ZERO    .L1     A10               ; |140| 
           NOP             4
           ; BRANCH OCCURS                   ; |140| 
;** --------------------------------------------------------------------------*
	.line	34
;----------------------------------------------------------------------
; 143 | if (SIO_reclaim(channel->outStream,                                    
; 144 |                                 &channel->buf,                         
; 145 |                                 &arg) < 0) {                           
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(12),B4       ; |143| 
           ADD     .D2     SP,16,B5          ; |143| 
           MVKL    .S2     RL18,B3           ; |143| 
           MV      .L1X    B5,A6             ; |143| 
           B       .S1     _SIO_reclaim      ; |143| 
           LDW     .D2T1   *+B4(4),A4        ; 
           ADD     .L2     8,B4,B4           ; 
           MVKH    .S2     RL18,B3           ; |143| 
           NOP             2
RL18:      ; CALL OCCURS                     ; |143| 
           CMPLT   .L1     A4,0,A1           ; 
	.line	37
;----------------------------------------------------------------------
; 146 | return(FALSE);                                                         
;----------------------------------------------------------------------
   [ A1]   B       .S1     L1                ; |146| 
   [ A1]   ZERO    .L1     A10               ; |146| 
           NOP             4
           ; BRANCH OCCURS                   ; |146| 
;** --------------------------------------------------------------------------*
	.line	40
;----------------------------------------------------------------------
; 149 | LOG_printf(&trace1, "sio_reclaim out returns buffer 0x%x", channel->buf
;     | );                                                                     
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(12),B4       ; |149| 
           MVKL    .S2     SL4+0,B5          ; |149| 
           MVKH    .S2     SL4+0,B5          ; |149| 
           STW     .D2T2   B5,*+SP(4)        ; |149| 
           MVKL    .S2     RL20,B3           ; |149| 

           B       .S1     _LOG_printf       ; |149| 
||         LDW     .D2T2   *+B4(8),B4        ; |149| 

           MVKL    .S1     _trace1,A4        ; |149| 
           MVKH    .S2     RL20,B3           ; |149| 
           MVKH    .S1     _trace1,A4        ; |149| 
           NOP             1
           STW     .D2T2   B4,*+SP(8)        ; |149| 
RL20:      ; CALL OCCURS                     ; |149| 
	.line	41
;----------------------------------------------------------------------
; 150 | return(TRUE);                                                          
;----------------------------------------------------------------------
           MVK     .S1     0x1,A10           ; |150| 
;** --------------------------------------------------------------------------*
L1:    
	.line	42

           LDW     .D2T1   *+SP(20),A10      ; |151| 
||         MV      .L1     A10,A4            ; |151| 

           LDW     .D2T2   *++SP(24),B3      ; |151| 
           NOP             4
           B       .S2     B3                ; |151| 
           NOP             5
           ; BRANCH OCCURS                   ; |151| 
	.endfunc	151,000080400h,24


	.sect	".text"
	.global	_echo
	.sym	_echo,_echo, 32, 2, 0
	.func	153
;----------------------------------------------------------------------
; 153 | void echo(Int channelNum)                                              
;----------------------------------------------------------------------

;******************************************************************************
;* FUNCTION NAME: _echo                                                       *
;*                                                                            *
;*   Regs Modified     : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,B0,B1,B2,B3,B4,B5,B6,  *
;*                           B7,B8,B9,SP                                      *
;*   Regs Used         : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,B0,B1,B2,B3,B4,B5,B6,  *
;*                           B7,B8,B9,DP,SP                                   *
;*   Local Frame Size  : 8 Args + 4 Auto + 4 Save = 16 byte                   *
;******************************************************************************
_echo:
;** --------------------------------------------------------------------------*
	.sym	_channelNum,4, 4, 17, 32
	.sym	_channelNum,12, 4, 1, 32
           STW     .D2T2   B3,*SP--(16)      ; |153| 
	.line	2
           STW     .D2T1   A4,*+SP(12)       ; |154| 
	.line	7
;----------------------------------------------------------------------
; 159 | if ((audioChannel[channelNum].buf = (Ptr)MEM_alloc(SDRAM,              
; 160 | 
;     |                             SAMPLE_BUF_SIZE,                           
; 161 | 
;     |                             0)) == NULL) {                             
;----------------------------------------------------------------------
           B       .S1     _MEM_alloc        ; |159| 
           LDW     .D2T1   *+DP(_SDRAM),A4   ; |159| 
           MVKL    .S2     RL22,B3           ; |159| 
           MVK     .S2     0x140,B4          ; |159| 
           MVKH    .S2     RL22,B3           ; |159| 
           ZERO    .L1     A6                ; |159| 
RL22:      ; CALL OCCURS                     ; |159| 
           LDW     .D2T2   *+SP(12),B4       ; |159| 
           MV      .L1     A4,A1             ; 
           MVK     .S1     (_audioChannel+8-$bss),A0 ; |159| 
   [ A1]   B       .S1     L2                ; |159| 
           ADD     .L1X    DP,A0,A0          ; |159| 
           SHL     .S2     B4,5,B5           ; |159| 
           SUBAW   .D2     B5,B4,B4          ; |159| 
           ADD     .L1X    A0,B4,A0          ; |159| 
           STW     .D1T1   A1,*A0            ; |159| 
           ; BRANCH OCCURS                   ; |159| 
;** --------------------------------------------------------------------------*
	.line	10
;----------------------------------------------------------------------
; 162 | SYS_abort("MEM_alloc failed");                                         
;----------------------------------------------------------------------
           B       .S1     _SYS_abort        ; |162| 
           MVKL    .S1     SL5+0,A0          ; |162| 
           MVKH    .S1     SL5+0,A0          ; |162| 
           MVKL    .S2     RL24,B3           ; |162| 
           STW     .D2T1   A0,*+SP(4)        ; |162| 
           MVKH    .S2     RL24,B3           ; |162| 
RL24:      ; CALL OCCURS                     ; |162| 
;** --------------------------------------------------------------------------*
L2:    
	.line	13
;----------------------------------------------------------------------
; 165 | if ((audioChannel[channelNum].buf1 = (Ptr)MEM_alloc(SDRAM,             
; 166 | 
;     |                              SAMPLE_BUF_SIZE,                          
; 167 | 
;     |                              0)) == NULL) {                            
;----------------------------------------------------------------------
           B       .S1     _MEM_alloc        ; |165| 
           LDW     .D2T1   *+DP(_SDRAM),A4   ; |165| 
           MVKL    .S2     RL26,B3           ; |165| 
           MVK     .S2     0x140,B4          ; |165| 
           MVKH    .S2     RL26,B3           ; |165| 
           ZERO    .L1     A6                ; |165| 
RL26:      ; CALL OCCURS                     ; |165| 
           LDW     .D2T2   *+SP(12),B4       ; |165| 
           MV      .L1     A4,A1             ; 
           MVK     .S1     (_audioChannel+12-$bss),A0 ; |165| 
   [ A1]   B       .S1     L3                ; |165| 
           ADD     .L1X    DP,A0,A0          ; |165| 
           SHL     .S2     B4,5,B5           ; |165| 
           SUBAW   .D2     B5,B4,B4          ; |165| 
           ADD     .L1X    A0,B4,A0          ; |165| 
           STW     .D1T1   A1,*A0            ; |165| 
           ; BRANCH OCCURS                   ; |165| 
;** --------------------------------------------------------------------------*
	.line	16
;----------------------------------------------------------------------
; 168 | SYS_abort("MEM_alloc failed");                                         
;----------------------------------------------------------------------
           B       .S1     _SYS_abort        ; |168| 
           MVKL    .S1     SL5+0,A0          ; |168| 
           MVKH    .S1     SL5+0,A0          ; |168| 
           MVKL    .S2     RL28,B3           ; |168| 
           STW     .D2T1   A0,*+SP(4)        ; |168| 
           MVKH    .S2     RL28,B3           ; |168| 
RL28:      ; CALL OCCURS                     ; |168| 
;** --------------------------------------------------------------------------*
L3:    
	.line	20
;----------------------------------------------------------------------
; 172 | if (SIO_issue(audioChannel[channelNum].outStream,                      
; 173 |                           audioChannel[channelNum].buf,                
; 174 |                           0,                                           
; 175 |                           NULL) < 0) {                                 
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(12),B4       ; |172| 
           MVK     .S2     (_audioChannel+8-$bss),B5 ; |172| 
           MVK     .S1     (_audioChannel+4-$bss),A0 ; |172| 
           ADD     .L1X    DP,A0,A0          ; |172| 
           ADD     .L2     DP,B5,B5          ; |172| 
           SHL     .S2     B4,5,B6           ; |172| 

           SUBAW   .D2     B6,B4,B6          ; |172| 
||         SHL     .S2     B4,5,B7           ; |172| 

           SUBAW   .D2     B7,B4,B4          ; |172| 

           B       .S1     _SIO_issue        ; |172| 
||         ADD     .L2     B5,B4,B4          ; |172| 
||         ADD     .L1X    A0,B6,A0          ; |172| 

           LDW     .D2T2   *B4,B4            ; 
||         LDW     .D1T1   *A0,A4            ; 

           MVKL    .S2     RL30,B3           ; |172| 
           ZERO    .L2     B6                ; |172| 
           MVKH    .S2     RL30,B3           ; |172| 
           ZERO    .L1     A6                ; |172| 
RL30:      ; CALL OCCURS                     ; |172| 
           CMPLT   .L1     A4,0,A1           ; 
   [!A1]   B       .S1     L4                ; |172| 
           NOP             5
           ; BRANCH OCCURS                   ; |172| 
;** --------------------------------------------------------------------------*
	.line	24
;----------------------------------------------------------------------
; 176 | SYS_abort("error on issue for chan %d", channelNum);                   
;----------------------------------------------------------------------

           B       .S1     _SYS_abort        ; |176| 
||         LDW     .D2T2   *+SP(12),B4       ; |176| 

           MVKL    .S1     SL6+0,A0          ; |176| 
           MVKH    .S1     SL6+0,A0          ; |176| 

⌨️ 快捷键说明

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