📄 rxfunctions.asm
字号:
.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 + -