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

📄 dss.asm

📁 Using DSP/BIOS I/O in Multichannel Systems
💻 ASM
📖 第 1 页 / 共 5 页
字号:
   [!B0]   ZERO    .S2     B5                ; |84| 
           NOP             3
   [!B0]   LDW     .D2T2   *+B4(32),B4       ; |84| 
           NOP             4
   [!B0]   LDW     .D2T2   *+B4(8),B6        ; |84| 
   [!B0]   MVK     .S2     (_DSS_dacObj-$bss),B4 ; |84| 
   [!B0]   ADD     .L2     DP,B4,B4          ; |84| 
           NOP             2
   [!B0]   STW     .D2T2   B5,*+B4[B6]       ; |84| 
	.line	11
;----------------------------------------------------------------------
;  88 | if (MEM_free(IDRAM, device->object, sizeof(DSS_Obj)) != TRUE) {        
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(4),B4        ; |88| 
           LDW     .D2T1   *+DP(_IDRAM),A4   ; |88| 
           MVKL    .S2     RL0,B3            ; |88| 
           MVKH    .S2     RL0,B3            ; |88| 
           B       .S1     _MEM_free         ; |88| 
           LDW     .D2T2   *+B4(32),B4       ; 
           MVK     .S1     0xc,A6            ; |88| 
           NOP             3
RL0:       ; CALL OCCURS                     ; |88| 
           CMPEQ   .L1     A4,1,A1           ; 
	.line	12
;----------------------------------------------------------------------
;  89 | return SYS_EALLOC;                                                     
;----------------------------------------------------------------------
   [!A1]   B       .S1     L5                ; |89| 
   [!A1]   MVK     .S1     0x1,A10           ; |89| 
           NOP             4
           ; BRANCH OCCURS                   ; |89| 
;** --------------------------------------------------------------------------*
	.line	16
;----------------------------------------------------------------------
;  93 | if (DSS_adcObj[0] == NULL &&                                           
;  94 |             DSS_adcObj[1] == NULL &&                                   
;  95 |             DSS_dacObj[0] == NULL &&                                   
;  96 |             DSS_dacObj[1] == NULL) {                                   
;----------------------------------------------------------------------
           LDW     .D2T2   *+DP(_DSS_adcObj),B0 ; |93| 
           ZERO    .L1     A0                ; |93| 
           NOP             3
   [!B0]   MVK     .S1     0x1,A0            ; |93| 
           CMPEQ   .L1     A0,0,A0           ; |93| 
           XOR     .L1     1,A0,A1           ; |93| 
   [!A1]   B       .S1     L1                ; |93| 
           LDW     .D2T2   *+DP(_DSS_adcObj+4),B0 ; |93| 
           ZERO    .L1     A0                ; |93| 
   [!A1]   CMPEQ   .L1     A1,0,A0           ; 
   [!A1]   XOR     .L1     1,A0,A1           ; |93| 
           NOP             1
           ; BRANCH OCCURS                   ; |93| 
;** --------------------------------------------------------------------------*
   [!B0]   MVK     .S1     0x1,A0            ; |93| 
           CMPEQ   .L1     A0,0,A0           ; |93| 
           XOR     .L1     1,A0,A1           ; |93| 
           CMPEQ   .L1     A1,0,A0           ; 
           XOR     .L1     1,A0,A1           ; |93| 
;** --------------------------------------------------------------------------*
L1:    
   [!A1]   B       .S1     L2                ; |93| 
           LDW     .D2T2   *+DP(_DSS_dacObj),B0 ; |93| 
           ZERO    .L1     A0                ; |93| 
           MV      .L2X    A1,B5             ; |93| 
   [!A1]   MV      .L1X    B5,A1             ; 
           NOP             1
           ; BRANCH OCCURS                   ; |93| 
;** --------------------------------------------------------------------------*
   [!B0]   MVK     .S1     0x1,A0            ; |93| 
           CMPEQ   .L1     A0,0,A0           ; |93| 
           XOR     .L2X    1,A0,B5           ; |93| 
           MV      .L1X    B5,A1             ; 
;** --------------------------------------------------------------------------*
L2:    
   [!A1]   B       .S1     L3                ; |93| 
           LDW     .D2T2   *+DP(_DSS_dacObj+4),B0 ; |93| 
           ZERO    .L2     B4                ; |93| 
   [!A1]   MV      .L1X    B5,A1             ; |93| 
           NOP             2
           ; BRANCH OCCURS                   ; |93| 
;** --------------------------------------------------------------------------*
   [!B0]   MVK     .S2     0x1,B4            ; |93| 
           MV      .L2     B4,B5             ; |93| 
           MV      .L1X    B5,A1             ; |93| 
;** --------------------------------------------------------------------------*
L3:    
   [!A1]   B       .S1     L4                ; |93| 
           NOP             5
           ; BRANCH OCCURS                   ; |93| 
;** --------------------------------------------------------------------------*
	.line	20
;----------------------------------------------------------------------
;  97 | dss_isr_stop();                                                        
;----------------------------------------------------------------------
           B       .S1     _dss_isr_stop     ; |97| 
           MVKL    .S2     RL2,B3            ; |97| 
           MVKH    .S2     RL2,B3            ; |97| 
           NOP             3
RL2:       ; CALL OCCURS                     ; |97| 
;** --------------------------------------------------------------------------*
L4:    
	.line	23
;----------------------------------------------------------------------
; 100 | return 0;                                                              
;----------------------------------------------------------------------
           ZERO    .L1     A10               ; |100| 
;** --------------------------------------------------------------------------*
L5:    
	.line	24

           LDW     .D2T1   *+SP(12),A10      ; |101| 
||         MV      .L1     A10,A4            ; |101| 

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


	.sect	".text"
	.global	_DSS_ctrl
	.sym	_DSS_ctrl,_DSS_ctrl, 36, 2, 0
	.func	104
;----------------------------------------------------------------------
; 104 | DSS_ctrl(DEV_Handle handle, Uns val, Arg arg)                          
;----------------------------------------------------------------------

;******************************************************************************
;* FUNCTION NAME: _DSS_ctrl                                                   *
;*                                                                            *
;*   Regs Modified     : A4,SP                                                *
;*   Regs Used         : A4,A6,B3,B4,SP                                       *
;*   Local Frame Size  : 0 Args + 12 Auto + 0 Save = 12 byte                  *
;******************************************************************************
_DSS_ctrl:
;** --------------------------------------------------------------------------*
	.sym	_handle,4, 24, 17, 32, _DEV_Obj
	.sym	_val,20, 14, 17, 32
	.sym	_arg,6, 4, 17, 32
	.sym	_handle,4, 24, 1, 32, _DEV_Obj
	.sym	_val,8, 14, 1, 32
	.sym	_arg,12, 4, 1, 32
           SUB     .D2     SP,16,SP          ; |104| 
	.line	2
           STW     .D2T1   A6,*+SP(12)       ; |105| 
           STW     .D2T2   B4,*+SP(8)        ; |105| 
           STW     .D2T1   A4,*+SP(4)        ; |105| 
	.line	4
;----------------------------------------------------------------------
; 107 | return SYS_EINVAL;                                                     
;----------------------------------------------------------------------
           MVK     .S1     0x5,A4            ; |107| 
	.line	5
           B       .S2     B3                ; |108| 
           ADDK    .S2     16,SP             ; |108| 
           NOP             4
           ; BRANCH OCCURS                   ; |108| 
	.endfunc	108,000000000h,16


	.sect	".text"
	.global	_DSS_idle
	.sym	_DSS_idle,_DSS_idle, 36, 2, 0
	.func	111
;----------------------------------------------------------------------
; 111 | DSS_idle(DEV_Handle device, Bool flush)                                
;----------------------------------------------------------------------

;******************************************************************************
;* FUNCTION NAME: _DSS_idle                                                   *
;*                                                                            *
;*   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  : 0 Args + 20 Auto + 4 Save = 24 byte                  *
;******************************************************************************
_DSS_idle:
;** --------------------------------------------------------------------------*
	.sym	_device,4, 24, 17, 32, _DEV_Obj
	.sym	_flush,20, 13, 17, 16
	.sym	_device,4, 24, 1, 32, _DEV_Obj
	.sym	_flush,8, 13, 1, 16
	.sym	_objptr,12, 24, 1, 32, _DSS_obj
	.sym	_chan,16, 4, 1, 32
           STW     .D2T2   B3,*SP--(24)      ; |111| 
	.line	2
           STH     .D2T2   B4,*+SP(8)        ; |112| 
           STW     .D2T1   A4,*+SP(4)        ; |112| 
	.line	3
;----------------------------------------------------------------------
; 113 | DSS_Handle objptr = (DSS_Handle)device->object;                        
;----------------------------------------------------------------------
           LDW     .D1T1   *+A4(32),A0       ; |113| 
           NOP             4
           STW     .D2T1   A0,*+SP(12)       ; |113| 
	.line	4
;----------------------------------------------------------------------
; 114 | int chan = objptr->chan;                                               
;----------------------------------------------------------------------
           LDW     .D1T1   *+A0(8),A0        ; |114| 
           NOP             4
           STW     .D2T1   A0,*+SP(16)       ; |114| 
	.line	6
;----------------------------------------------------------------------
; 116 | if ((device->mode == DEV_OUTPUT) && !flush) {                          
;----------------------------------------------------------------------

           LDHU    .D2T2   *+SP(8),B4        ; |116| 
||         MV      .L2X    A4,B5

           LDW     .D2T2   *+B5(20),B5       ; |116| 
           NOP             3
           CMPEQ   .L2     B4,0,B4           ; |116| 
           CMPEQ   .L2     B5,1,B0           ; |116| 
   [!B0]   MV      .L2     B0,B4             ; |116| 
           MV      .L1X    B4,A1             ; |116| 
   [!A1]   B       .S1     L10               ; |116| 
           NOP             5
           ; BRANCH OCCURS                   ; |116| 
;** --------------------------------------------------------------------------*
	.sym	_post_count,20, 14, 1, 32
	.block	116
	.line	7
;----------------------------------------------------------------------
; 117 | Uns post_count = 0;                                                    
;----------------------------------------------------------------------
           ZERO    .L2     B4                ; |117| 
           STW     .D2T2   B4,*+SP(20)       ; |117| 
	.line	10
;----------------------------------------------------------------------
; 120 | while(!QUE_empty(device->todevice)) {                                  
;----------------------------------------------------------------------
           B       .S1     L7                ; |120| 
           NOP             5
           ; BRANCH OCCURS                   ; |120| 
;** --------------------------------------------------------------------------*
L6:    
	.line	11
;----------------------------------------------------------------------
; 121 | SEM_pend(objptr->sync, SYS_FOREVER);                                   
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(12),B5       ; |121| 
           MVKL    .S2     RL6,B3            ; |121| 
           MVK     .S2     0xffffffff,B4     ; |121| 
           MVKH    .S2     RL6,B3            ; |121| 
           B       .S1     _SEM_pend         ; |121| 
           LDW     .D2T1   *B5,A4            ; 
           NOP             4
RL6:       ; CALL OCCURS                     ; |121| 
	.line	12
;----------------------------------------------------------------------
; 122 | post_count++;                                                          
;----------------------------------------------------------------------
           LDW     .D2T2   *+SP(20),B4       ; |122| 
           NOP             4
           ADD     .L2     1,B4,B4           ; |122| 
           STW     .D2T2   B4,*+SP(20)       ; |122| 
;*----------------------------------------------------------------------------*
;*   SOFTWARE PIPELINE INFORMATION
;*      Disqualified loop: software pipelining disabled
;*----------------------------------------------------------------------------*
L7:    
	.line	13

⌨️ 快捷键说明

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