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

📄 dss_isr_evm62_stub.lst

📁 Using DSP/BIOS I/O in Multichannel Systems
💻 LST
📖 第 1 页 / 共 5 页
字号:
2        00000100 013DD4F4          stw     a2, *SP--[14]                           ; CODE
2        00000104 013C11A0          mv      SP, a2                                          ; CODE
2                           
2                                   .if     (0 = 0)
2                                       .if (-1 = -1)
2                                           ; both amask and bmask non-zero
2                           
2        00000108 023DA2F7                  stw     b4, *+SP[13]                    ; CODE
2        0000010c 01898274  ||              stw     a3, *+a2[13 - 1]                        ; CODE
2                           
2                                       .else
2                                           ; both amask and bmask = 0
2                           
2                                           stw     TMPB, *+SPB[offset]                     ; CODE
2                           ||              stw     TMPA, *+SPA[offset - 1]                 ; CODE
2                           ||              mvc     creg0, TMPB                             ; CODE
2                           
2                                       .endif
2                                   .else
2                                       ; one of amask or bmask is 0, but not both
2                                       FIRST_BIT_NUM       mask, bitn_next
2                           
2                                       stw TMPB, *+SPB[offset]                             ; CODE
2                           ||          stw TMPA, *+SPA[offset - 1]                         ; CODE
2                           ||          mv  :reg::bitn_next:, tmpreg                        ; CODE
2                           
2                                       .asg        0, mask
2                                   .endif
2                           
2                                   .eval   13 - 2, offset
2                           
2                                   ;
2                                   ; This loop handles when both A and B registers need saving
2                                   ;
2                                   .loop
2                                       .if         (a_bitcount > 0) & (b_bitcount > 0)
2                                           FIRST_BIT_NUM   amask, bitn_a
2                                           FIRST_BIT_NUM   bmask, bitn_b
2                                           .eval   amask & ~(1 << bitn_a), amask
2                                           .eval   bmask & ~(1 << bitn_b), bmask
2                           
2                                           .if     !(((a_bitcount = 1) & (b_bitcount > 2)) | ((b_bitcount = 1) & (a_bitcount > 2)
2                                               ;
2                                               ; At this point, one of the following is true:
2                                               ;   1. a_bitcount & b_bitcount > 1
2                                               ;   2. a_bitcount & b_bitcount = 1
2                                               ;   3. a_bitcount = 1 & b_bitcount = 2
2                                               ;   4. a_bitcount = 2 & b_bitcount = 1
2                                               ; In cases 2-4 this is the last iteration of the loop
TMS320C6x COFF Assembler         Version 4.00     Fri Sep 15 10:24:27 2000
Copyright (c) 1996-2000 Texas Instruments Incorporated
dss_isr_evm62_stub.s62                                               PAGE   16

2                                               ;
2                           
2                                               stw b:bitn_b:, *+SPB[offset]                ; CODE
2                           ||                  stw a:bitn_a:, *+SPA[offset - 1]            ; CODE
2                           
2                                               .eval       offset - 2, offset
2                                               .eval       a_bitcount - 1, a_bitcount
2                                               .eval       b_bitcount - 1, b_bitcount
2                                           .else
2                                               ;
2                                               ; Either a_bitcount or b_bitcount equals 1, but not both.
2                                               ; The one != 1 is > 2.
2                                               ; We're going to exit the loop after this, knowing we'll
2                                               ; also be doing the next loop at least twice.
2                                               ;
2                                               .if (b_bitcount = 1)
2                                                   .asg    amask, mask
2                                                   .asg    A, reg
2                                                   .asg    TMPB, tmpreg
2                                               .elseif     (a_bitcount = 1)
2                                                   .asg    bmask, mask
2                                                   .asg    B, reg
2                                                   .asg    TMPA, tmpreg
2                                               .else
2                                                   .emsg   "Bad macro logic"
2                                                   .break
2                                               .endif
2                           
2                                               FIRST_BIT_NUM       mask, bitn_next
2                           
2                                               stw b:bitn_b:, *+SPB[offset]                ; CODE
2                           ||                  stw a:bitn_a:, *+SPA[offset - 1]            ; CODE
2                           ||                  mv  :reg::bitn_next:, tmpreg                ; CODE
2                           
2                                               .eval       offset - 2, offset
2                                               .eval       a_bitcount - 1, a_bitcount
2                                               .eval       b_bitcount - 1, b_bitcount
2                           
2                                               .break
2                                           .endif
2                                       .else
2                                           .break
2                                       .endif
2                                   .endloop
3                                       .if         (6 > 0) & (5 > 0)
3        00000110                           FIRST_BIT_NUM   amask, bitn_a
4                                   .asg    0, BITNUM
4                                   .eval   1008, regmask
5                                       .if (1008 & 1)
5                                           .break
5                                       .endif
5                                       .eval       1008 >> 1, regmask
5                                       .eval       0 + 1, BITNUM
5                                       .if (504 & 1)
5                                           .break
TMS320C6x COFF Assembler         Version 4.00     Fri Sep 15 10:24:27 2000
Copyright (c) 1996-2000 Texas Instruments Incorporated
dss_isr_evm62_stub.s62                                               PAGE   17

5                                       .endif
5                                       .eval       504 >> 1, regmask
5                                       .eval       1 + 1, BITNUM
5                                       .if (252 & 1)
5                                           .break
5                                       .endif
5                                       .eval       252 >> 1, regmask
5                                       .eval       2 + 1, BITNUM
5                                       .if (126 & 1)
5                                           .break
5                                       .endif
5                                       .eval       126 >> 1, regmask
5                                       .eval       3 + 1, BITNUM
5                                       .if (63 & 1)
5                                           .break
3        00000110                           FIRST_BIT_NUM   bmask, bitn_b
4                                   .asg    0, BITNUM
4                                   .eval   992, regmask
5                                       .if (992 & 1)
5                                           .break
5                                       .endif
5                                       .eval       992 >> 1, regmask
5                                       .eval       0 + 1, BITNUM
5                                       .if (496 & 1)
5                                           .break
5                                       .endif
5                                       .eval       496 >> 1, regmask
5                                       .eval       1 + 1, BITNUM
5                                       .if (248 & 1)
5                                           .break
5                                       .endif
5                                       .eval       248 >> 1, regmask
5                                       .eval       2 + 1, BITNUM
5                                       .if (124 & 1)
5                                           .break
5                                       .endif
5                                       .eval       124 >> 1, regmask
5                                       .eval       3 + 1, BITNUM
5                                       .if (62 & 1)
5                                           .break
5                                       .endif
5                                       .eval       62 >> 1, regmask
5                                       .eval       4 + 1, BITNUM
5                                       .if (31 & 1)
5                                           .break
3                                           .eval   1008 & ~(1 << 4), amask
3                                           .eval   992 & ~(1 << 5), bmask
3                           
3                                           .if     !(((6 = 1) & (5 > 2)) | ((5 = 1) & (6 > 2)))
3                                               ;
3                                               ; At this point, one of the following is true:
3                                               ;   1. a_bitcount & b_bitcount > 1
3                                               ;   2. a_bitcount & b_bitcount = 1
3                                               ;   3. a_bitcount = 1 & b_bitcount = 2
3                                               ;   4. a_bitcount = 2 & b_bitcount = 1
TMS320C6x COFF Assembler         Version 4.00     Fri Sep 15 10:24:27 2000
Copyright (c) 1996-2000 Texas Instruments Incorporated
dss_isr_evm62_stub.s62                                               PAGE   18

3                                               ; In cases 2-4 this is the last iteration of the loop
3                                               ;
3                           
3        00000110 02BD62F7                      stw b5, *+SP[11]            ; CODE
3        00000114 02094274  ||                  stw a4, *+a2[11 - 1]                ; CODE
3                           
3                                               .eval       11 - 2, offset
3                                               .eval       6 - 1, a_bitcount
3                                               .eval       5 - 1, b_bitcount
3                                           .else
3                                               ;
3                                               ; Either a_bitcount or b_bitcount equals 1, but not both.
3                                               ; The one != 1 is > 2.
3                                               ; We're going to exit the loop after this, knowing we'll
3                                               ; also be doing the next loop at least twice.
3                                               ;
3                                               .if (b_bitcount = 1)
3                                                   .asg    amask, mask
3                                                   .asg    A, reg
3                                                   .asg    TMPB, tmpreg
3                                               .elseif     (a_bitcount = 1)
3                                                   .asg    bmask, mask
3                                                   .asg    B, reg
3                                                   .asg    TMPA, tmpreg
3                                               .else
3                                                   .emsg   "Bad macro logic"
3                                                   .break
3                                               .endif
3                           
3                                               FIRST_BIT_NUM       mask, bitn_next
3                           
3                                               stw b:bitn_b:, *+SPB[offset]                ; CODE
3                           ||                  stw a:bitn_a:, *+SPA[offset - 1]            ; CODE
3                           ||                  mv  :reg::bitn_next:, tmpreg                ; CODE
3                           
3                                               .eval       offs

⌨️ 快捷键说明

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