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

📄 rxfunctions.asm

📁 MIMO 2x2接收端选择全系统仿真代码
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	.sym	_n,22, 4, 4, 32
	.sym	_uiInBuffSize,18, 14, 4, 32
	.sym	_pInBuff,25, 19, 4, 32
	.sym	_pEnergyDetState,6, 24, 4, 32, $$fake0
	.sym	L$1,17, 4, 4, 32
	.sym	U$62,21, 14, 4, 32
	.sym	U$27,4, 19, 4, 32
	.sym	K$19,9, 6, 4, 32
	.sym	U$3,17, 14, 4, 32
;** 88	-----------------------    U$3 = pEnergyDetState->unEnergyBlock;
;** 88	-----------------------    factor = _rcpsp((float)U$3);
;** 92	-----------------------    pEnergyDetState->iStartIndex = (-1);
;** 94	-----------------------    if ( !uiInBuffSize ) goto g13;

           MV      .D2     B4,B2             ; |84| 
||         MV      .S2X    A4,B9             ; |84| 

	.line	6
           LDW     .D1T2   *A6,B1            ; |88| 
           NOP             4
           INTSPU  .L2     B1,B4             ; |88| 
           NOP             3
           RCPSP   .S1X    B4,A8             ; |88| 
	.line	10
           MVK     .S1     -1,A0             ; |92| 
           STW     .D1T1   A0,*+A6(16)       ; |92| 
	.line	12
   [!B2]   B       .S1     L9                ; |94| 
   [ B2]   LDW     .D1T1   *+A6(12),A7
   [ B2]   LDW     .D1T2   *+A6(4),B8
   [ B2]   ZERO    .S1     A9
           NOP             2
           ; BRANCH OCCURS                   ; |94| 
;** --------------------------------------------------------------------------*
;**  	-----------------------    V$2 = U$3;
;**  	-----------------------    V$1 = pEnergyDetState->fEnergyThrs;
;**  	-----------------------    V$0 = pEnergyDetState->fNoisePower1;
;**  	-----------------------    K$19 = 0.0F;
;** 91	-----------------------    n = 0;
;**  	-----------------------    #pragma LOOP_FLAGS(4096u)
	.line	9
           ZERO    .D2     B6                ; |91| 
;** --------------------------------------------------------------------------*
;**   BEGIN LOOP L4
;** --------------------------------------------------------------------------*
L4:    
;**	-----------------------g3:
;** 98	-----------------------    channelB = K$19;
;** 97	-----------------------    channelA = channelB;
;** 99	-----------------------    if ( !V$2 ) goto g7;
	.line	16
           MV      .D1     A9,A5             ; |98| 
	.line	15
           MV      .D1     A5,A0             ; |97| 
	.line	17
   [!B1]   B       .S1     L8                ; |99| 
   [!B1]   MV      .D2     B6,B5
           NOP             4
           ; BRANCH OCCURS                   ; |99| 
;** --------------------------------------------------------------------------*
;**  	-----------------------    U$27 = &pInBuff[n-2];
;** 101	-----------------------    L$1 = V$2;
;** 104	-----------------------    n += V$2*2;
;**  	-----------------------    #pragma MUST_ITERATE(1, 1099511627775, 1)
;**  	-----------------------    #pragma LOOP_FLAGS(4096u)
;**	-----------------------g6:
;** 101	-----------------------    channelA += _fabsf((float)*(U$27 += 2));
;** 103	-----------------------    channelB += _fabsf((float)U$27[1]);
;** 106	-----------------------    if ( --L$1 ) goto g6;
           ADDAH   .D2     B9,B6,B4
           SUB     .S1X    B4,4,A4
	.line	19
	.line	22
           MVC     .S2     CSR,B7
           AND     .S2     -2,B7,B5
           MVC     .S2     B5,CSR            ; interrupts off
;*----------------------------------------------------------------------------*
;*   SOFTWARE PIPELINE INFORMATION
;*
;*      Loop source line                 : 99
;*      Loop opening brace source line   : 100
;*      Loop closing brace source line   : 106
;*      Known Minimum Trip Count         : 1
;*      Known Max Trip Count Factor      : 1
;*      Loop Carried Dependency Bound(^) : 4
;*      Unpartitioned Resource Bound     : 2
;*      Partitioned Resource Bound(*)    : 2
;*      Resource Partition:
;*                                A-side   B-side
;*      .L units                     2*       2*    
;*      .S units                     1        2*    
;*      .D units                     2*       0     
;*      .M units                     0        0     
;*      .X cross paths               0        1     
;*      .T address paths             2*       0     
;*      Long read paths              0        0     
;*      Long write paths             0        0     
;*      Logical  ops (.LS)           0        0     (.L or .S unit)
;*      Addition ops (.LSD)          0        1     (.L or .S or .D unit)
;*      Bound(.L .S .LS)             2*       2*    
;*      Bound(.L .S .D .LS .LSD)     2*       2*    
;*
;*      Searching for software pipeline schedule at ...
;*         ii = 4  Schedule found with 4 iterations in parallel
;*      Done
;*
;*      Collapsed epilog stages     : 3
;*      Prolog not entirely removed
;*      Collapsed prolog stages     : 2
;*
;*      Minimum required memory pad : 0 bytes
;*
;*      For further improvement on this loop, try option -mh12
;*
;*      Minimum safe trip count     : 1
;*----------------------------------------------------------------------------*
L5:    ; PIPED LOOP PROLOG

           MV      .S2X    A0,B4
||         LDH     .D1T1   *++A4(4),A0       ; |101| (P) <0,0> 

           ADD     .D2     1,B1,B0
||         LDH     .D1T1   *+A4(2),A0        ; |103| (P) <0,1> 
||         B       .S2     L6                ; |106| (P) <0,9> 

           MVK     .S1     0x2,A2            ; init prolog collapse predicate
||         ADDAH   .D2     B6,B1,B6          ; |104| 
||         SUB     .L1X    B0,2,A1

;** --------------------------------------------------------------------------*
L6:    ; PIPED LOOP KERNEL

   [!A2]   ADDSP   .L2     B5,B4,B4          ; |101| <0,11>  ^ 
|| [!A2]   ADDSP   .L1     A0,A5,A5          ; |103| <0,11>  ^ 

   [ B0]   SUB     .D2     B0,1,B0           ; |106| <1,8> 
|| [ A1]   LDH     .D1T1   *++A4(4),A0       ; |101| <3,0> 

   [ A2]   SUB     .S1     A2,1,A2           ; <0,13> 
|| [ B0]   B       .S2     L6                ; |106| <1,9> 
||         INTSP   .L2X    A0,B5             ; |101| <2,5> 
|| [ A1]   LDH     .D1T1   *+A4(2),A0        ; |103| <3,1> 

   [ A1]   SUB     .D1     A1,1,A1           ; <0,14> 
||         ABSSP   .S2     B5,B5             ; |101| <1,10> 
||         ABSSP   .S1     A3,A0             ; |103| <1,10> 
||         INTSP   .L1     A0,A3             ; |103| <2,6> 

;** --------------------------------------------------------------------------*
L7:    ; PIPED LOOP EPILOG
;** --------------------------------------------------------------------------*
           NOP             2
           MVC     .S2     B7,CSR            ; interrupts on
           MV      .S1X    B4,A0
;**	-----------------------g7:
;**  	-----------------------    U$62 = n;
;** 108	-----------------------    if ( V$1 >= K$19 ) goto g9;
;** 110	-----------------------    pEnergyDetState->fEnergyThrs = V$1 = (channelA+channelB)*10.0F;
;**	-----------------------g9:
;** 113	-----------------------    if ( (channelA > V$1)|(channelB > V$1) ) goto g11;
;** 122	-----------------------    C$3 = _fabsf(channelA);
;** 122	-----------------------    pEnergyDetState->fNoisePower1 = V$0 = C$3*factor;
;** 123	-----------------------    C$4 = _fabsf(channelB);
;** 123	-----------------------    pEnergyDetState->fNoisePower2 = C$4*factor;
;** 125	-----------------------    pEnergyDetState->fEnergyThrs = V$1 = V$1*0.949999988079071044922F+(C$3+C$4)*0.500000119209289550781F;
;** 125	-----------------------    goto g12;
;**	-----------------------g11:
;** 115	-----------------------    pEnergyDetState->iStartIndex = U$62-V$2*2u;
;** 116	-----------------------    n = uiInBuffSize;
;** 118	-----------------------    Sig_Nois_Ratio = factor*channelA*_rcpsp(V$0);
;**  	-----------------------    U$62 = uiInBuffSize;
;**	-----------------------g12:
;** 130	-----------------------    if ( U$62 < uiInBuffSize ) goto g3;
;**	-----------------------g13:
;**  	-----------------------    return;
           MV      .D2     B6,B5
;** --------------------------------------------------------------------------*
L8:    
	.line	26
           CMPLTSP .S1     A7,A9,A1          ; |108| 
	.line	28
   [ A1]   ADDSP   .L1     A5,A0,A3          ; |110| 
   [ A1]   ZERO    .D2     B4                ; |110| 
   [ A1]   MVKH    .S2     0x41200000,B4     ; |110| 
           NOP             1
   [ A1]   MPYSP   .M1X    B4,A3,A7          ; |110| 
           NOP             3
   [ A1]   STW     .D1T1   A7,*+A6(12)       ; |110| 
	.line	31
           CMPGTSP .S1     A5,A7,A4          ; |113| 
           CMPGTSP .S1     A0,A7,A3          ; |113| 
           OR      .S1     A4,A3,A1          ; |113| 
	.line	40
   [!A1]   ABSSP   .S2X    A0,B4             ; |122| 
   [!A1]   MPYSP   .M2X    A8,B4,B8          ; |122| 
           NOP             3
   [!A1]   STW     .D1T2   B8,*+A6(4)        ; |122| 
	.line	41
   [!A1]   ABSSP   .S1     A5,A0             ; |123| 
   [!A1]   MPYSP   .M1     A8,A0,A3          ; |123| 
           NOP             3
   [!A1]   STW     .D1T1   A3,*+A6(8)        ; |123| 
	.line	43
   [!A1]   ADDSP   .L2X    A0,B4,B7          ; |125| 
   [!A1]   MVKL    .S1     0x3f733333,A0     ; |125| 
   [!A1]   MVKL    .S2     0x3f000002,B4     ; |125| 

   [!A1]   MVKH    .S1     0x3f733333,A0     ; |125| 
|| [!A1]   MVKH    .S2     0x3f000002,B4     ; |125| 

   [!A1]   MPYSP   .M2     B4,B7,B4          ; |125| 
|| [!A1]   MPYSP   .M1     A0,A7,A0          ; |125| 

           NOP             3
   [!A1]   ADDSP   .L1X    B4,A0,A7          ; |125| 
           NOP             3
   [!A1]   STW     .D1T1   A7,*+A6(12)       ; |125| 
	.line	33
   [ A1]   SUBAH   .D2     B5,B1,B4          ; |115| 
   [ A1]   STW     .D1T2   B4,*+A6(16)       ; |115| 
	.line	34
   [ A1]   MV      .D2     B2,B6             ; |116| 
	.line	36
   [ A1]   MPYSP   .M1     A0,A8,A0          ; |118| 
   [ A1]   RCPSP   .S2     B8,B4             ; |118| 
   [ A1]   MV      .D2     B2,B5
           NOP             1
   [ A1]   MPYSP   .M2X    B4,A0,B4          ; |118| 
   [ A1]   MVKL    .S1     _Sig_Nois_Ratio,A0 ; |118| 
   [ A1]   MVKH    .S1     _Sig_Nois_Ratio,A0 ; |118| 
           NOP             1
   [ A1]   STW     .D1T2   B4,*A0            ; |118| 
	.line	48
           CMPLTU  .L2     B5,B2,B0          ; |130| 
   [ B0]   B       .S1     L4                ; |130| 
           NOP             5
           ; BRANCH OCCURS                   ; |130| 
;** --------------------------------------------------------------------------*
L9:    
	.line	50
           RET     .S2     B3                ; |132| 
           NOP             5
           ; BRANCH OCCURS                   ; |132| 
	.endfunc	132,000000000h,0


;******************************************************************************
;* UNDEFINED EXTERNAL REFERENCES                                              *
;******************************************************************************
	.global	_calc_crc

;******************************************************************************
;* TYPE INFORMATION                                                           *
;******************************************************************************
	.sym	_Uint8, 0, 12, 13, 8
	.sym	_Int16, 0, 3, 13, 16
	.sym	_Uint16, 0, 13, 13, 16
	.etag	$$fake2, 32
	.member	_eRX_RCVIDLE, 0, 4, 16, 32
	.member	_eRX_RUNPLL, 1, 4, 16, 32
	.member	_eRX_RCVSYNC, 2, 4, 16, 32
	.member	_eRX_CHANNELEST1, 3, 4, 16, 32
	.member	_eRX_CHANNELEST2, 4, 4, 16, 32
	.member	_eRX_ANTENNASEL, 5, 4, 16, 32
	.member	_eRX_RCVFIRSTDATA, 6, 4, 16, 32
	.member	_eRX_RCVDATA, 7, 4, 16, 32
	.eos
	.sym	_typRX_eRcvState, 0, 10, 13, 32,$$fake2
	.etag	$$fake3, 32
	.member	_eCOM_SISO, 0, 4, 16, 32
	.member	_eCOM_MIMO, 1, 4, 16, 32
	.eos
	.sym	_typCOM_eCommMethod, 0, 10, 13, 32,$$fake3
	.stag	$$fake1, 256
	.member	_RcvState, 0, 10, 8, 32, $$fake2
	.member	_RxMethod, 32, 10, 8, 32, $$fake3
	.member	_iSyncRep, 64, 4, 8, 32
	.member	_uFileSize, 96, 14, 8, 32
	.member	_uNoOfBlocks, 128, 14, 8, 32
	.member	_uFrameNo, 160, 14, 8, 32
	.member	_uiStartIndex, 192, 14, 8, 32
	.member	_iSyncStarted, 224, 4, 8, 32
	.eos
	.sym	_typRX_RECEIVESTATE, 0, 8, 13, 256,$$fake1
	.stag	$$fake0, 160
	.member	_unEnergyBlock, 0, 14, 8, 32
	.member	_fNoisePower1, 32, 6, 8, 32
	.member	_fNoisePower2, 64, 6, 8, 32
	.member	_fEnergyThrs, 96, 6, 8, 32
	.member	_iStartIndex, 128, 4, 8, 32
	.eos
	.sym	_typRX_ENERGYDETSTATE, 0, 8, 13, 160,$$fake0

⌨️ 快捷键说明

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