📄 crc16.asm
字号:
.field 29120,16 ; _crc_table[189] @ 3024
.field 28800,16 ; _crc_table[190] @ 3040
.field 45121,16 ; _crc_table[191] @ 3056
.field 20480,16 ; _crc_table[192] @ 3072
.field 37057,16 ; _crc_table[193] @ 3088
.field 37249,16 ; _crc_table[194] @ 3104
.field 20800,16 ; _crc_table[195] @ 3120
.field 37633,16 ; _crc_table[196] @ 3136
.field 21440,16 ; _crc_table[197] @ 3152
.field 21120,16 ; _crc_table[198] @ 3168
.field 37441,16 ; _crc_table[199] @ 3184
.field 38401,16 ; _crc_table[200] @ 3200
.field 22208,16 ; _crc_table[201] @ 3216
.field 22400,16 ; _crc_table[202] @ 3232
.field 38721,16 ; _crc_table[203] @ 3248
.field 21760,16 ; _crc_table[204] @ 3264
.field 38337,16 ; _crc_table[205] @ 3280
.field 38017,16 ; _crc_table[206] @ 3296
.field 21568,16 ; _crc_table[207] @ 3312
.field 39937,16 ; _crc_table[208] @ 3328
.field 23744,16 ; _crc_table[209] @ 3344
.field 23936,16 ; _crc_table[210] @ 3360
.field 40257,16 ; _crc_table[211] @ 3376
.field 24320,16 ; _crc_table[212] @ 3392
.field 40897,16 ; _crc_table[213] @ 3408
.field 40577,16 ; _crc_table[214] @ 3424
.field 24128,16 ; _crc_table[215] @ 3440
.field 23040,16 ; _crc_table[216] @ 3456
.field 39617,16 ; _crc_table[217] @ 3472
.field 39809,16 ; _crc_table[218] @ 3488
.field 23360,16 ; _crc_table[219] @ 3504
.field 39169,16 ; _crc_table[220] @ 3520
.field 22976,16 ; _crc_table[221] @ 3536
.field 22656,16 ; _crc_table[222] @ 3552
.field 38977,16 ; _crc_table[223] @ 3568
.field 34817,16 ; _crc_table[224] @ 3584
.field 18624,16 ; _crc_table[225] @ 3600
.field 18816,16 ; _crc_table[226] @ 3616
.field 35137,16 ; _crc_table[227] @ 3632
.field 19200,16 ; _crc_table[228] @ 3648
.field 35777,16 ; _crc_table[229] @ 3664
.field 35457,16 ; _crc_table[230] @ 3680
.field 19008,16 ; _crc_table[231] @ 3696
.field 19968,16 ; _crc_table[232] @ 3712
.field 36545,16 ; _crc_table[233] @ 3728
.field 36737,16 ; _crc_table[234] @ 3744
.field 20288,16 ; _crc_table[235] @ 3760
.field 36097,16 ; _crc_table[236] @ 3776
.field 19904,16 ; _crc_table[237] @ 3792
.field 19584,16 ; _crc_table[238] @ 3808
.field 35905,16 ; _crc_table[239] @ 3824
.field 17408,16 ; _crc_table[240] @ 3840
.field 33985,16 ; _crc_table[241] @ 3856
.field 34177,16 ; _crc_table[242] @ 3872
.field 17728,16 ; _crc_table[243] @ 3888
.field 34561,16 ; _crc_table[244] @ 3904
.field 18368,16 ; _crc_table[245] @ 3920
.field 18048,16 ; _crc_table[246] @ 3936
.field 34369,16 ; _crc_table[247] @ 3952
.field 33281,16 ; _crc_table[248] @ 3968
.field 17088,16 ; _crc_table[249] @ 3984
.field 17280,16 ; _crc_table[250] @ 4000
.field 33601,16 ; _crc_table[251] @ 4016
.field 16640,16 ; _crc_table[252] @ 4032
.field 33217,16 ; _crc_table[253] @ 4048
.field 32897,16 ; _crc_table[254] @ 4064
.field 16448,16 ; _crc_table[255] @ 4080
.sect ".text"
.global _crc_table
.sym _crc_table,_crc_table, 61, 2, 4096,, 256
; c:\ti\c6000\cgtools\bin\opt6x.exe -v6710 -s -O3 C:\DOCUME~1\SBPRJ-~1\LOCALS~1\Temp\TI3652_2 C:\DOCUME~1\SBPRJ-~1\LOCALS~1\Temp\TI3652_5 -w C:/ti/myprojects/mimo/receiver/Debug
.sect ".text"
.global _calc_crc
.sym _calc_crc,_calc_crc, 45, 2, 0
.func 112
;******************************************************************************
;* FUNCTION NAME: _calc_crc *
;* *
;* Regs Modified : A0,A1,A2,A3,A4,A5,B0,B4,B5 *
;* Regs Used : A0,A1,A2,A3,A4,A5,B0,B3,B4,B5,DP,SP *
;* Local Frame Size : 0 Args + 0 Auto + 0 Save = 0 byte *
;******************************************************************************
;******************************************************************************
;* *
;* Using -g (debug) with optimization (-o3) may disable key optimizations! *
;* *
;******************************************************************************
_calc_crc:
;** --------------------------------------------------------------------------*
.line 2
.sym _pDataBuff,4, 28, 17, 32
.sym _n,20, 4, 17, 32
.sym _crc,4, 13, 4, 16
.sym _pDataBuff,0, 28, 4, 32
.sym _pDataBuff,0, 28, 4, 32
.sym _n,20, 4, 4, 32
.sym L$1,20, 4, 4, 32
.sym K$19,3, 29, 4, 32
;** ----------------------- pDataBuff = pDataBuff;
;** 117 ----------------------- crc = 0u;
;** 118 ----------------------- if ( n <= 0 ) goto g4;
MV .D1 A4,A0 ; |113|
.line 6
ZERO .D1 A4 ; |117|
.line 7
CMPGT .L2 B4,0,B0 ; |118|
[!B0] B .S1 L4 ; |118|
NOP 5
; BRANCH OCCURS ; |118|
;** --------------------------------------------------------------------------*
;** 119 ----------------------- L$1 = n;
;** ----------------------- K$19 = &crc_table[0];
;** ----------------------- #pragma MUST_ITERATE(1, 1099511627775, 1)
;** ----------------------- #pragma LOOP_FLAGS(4096u)
;** -----------------------g3:
;** 119 ----------------------- crc = crc>>8^K$19[_extu((unsigned)*pDataBuff++^(unsigned)crc, 24u, 24u)];
;** 119 ----------------------- if ( --L$1 ) goto g3;
.line 8
MVK .S1 0x1,A2 ; init prolog collapse predicate
|| MVC .S2 CSR,B5
ADD .D2 1,B4,B0
|| MVKL .S1 _crc_table,A3
|| AND .S2 -2,B5,B4
MV .D1 A4,A5
|| SUB .L1X B0,1,A1
|| MVKH .S1 _crc_table,A3
|| MVC .S2 B4,CSR ; interrupts off
;*----------------------------------------------------------------------------*
;* SOFTWARE PIPELINE INFORMATION
;*
;* Loop source line : 118
;* Loop opening brace source line : 119
;* Loop closing brace source line : 119
;* Known Minimum Trip Count : 1
;* Known Max Trip Count Factor : 1
;* Loop Carried Dependency Bound(^) : 11
;* Unpartitioned Resource Bound : 2
;* Partitioned Resource Bound(*) : 3
;* Resource Partition:
;* A-side B-side
;* .L units 0 0
;* .S units 2 2
;* .D units 2 0
;* .M units 0 0
;* .X cross paths 1 1
;* .T address paths 2 0
;* Long read paths 0 0
;* Long write paths 0 0
;* Logical ops (.LS) 3 1 (.L or .S unit)
;* Addition ops (.LSD) 0 1 (.L or .S or .D unit)
;* Bound(.L .S .LS) 3* 2
;* Bound(.L .S .D .LS .LSD) 3* 2
;*
;* Searching for software pipeline schedule at ...
;* ii = 11 Schedule found with 2 iterations in parallel
;* Done
;*
;* Collapsed epilog stages : 1
;* Collapsed prolog stages : 1
;* Minimum required memory pad : 0 bytes
;*
;* For further improvement on this loop, try option -mh1
;*
;* Minimum safe trip count : 1
;*----------------------------------------------------------------------------*
L1: ; PIPED LOOP PROLOG
;** --------------------------------------------------------------------------*
L2: ; PIPED LOOP KERNEL
SHRU .S1 A5,8,A4 ; |119| <0,5>
|| [!A2] XOR .L1 A5,A4,A5 ; |119| <0,5> ^
[!A2] EXTU .S1 A5,24,24,A5 ; |119| <0,6> ^
[!A2] LDHU .D1T1 *+A3[A5],A5 ; |119| <0,7> ^
NOP 1
[ B0] SUB .D2 B0,1,B0 ; |119| <0,9>
[ B0] B .S2 L2 ; |119| <0,10>
[ A1] LDBU .D1T1 *A0++,A4 ; |119| <1,0>
XOR .S1 A5,A4,A4 ; |119| <0,12> ^
MV .S2X A4,B4 ; |119| <0,13> ^ Define a twin register
EXTU .S2 B4,16,16,B4 ; |119| <0,14> ^
[ A2] SUB .D1 A2,1,A2 ; <0,15>
|| [ A1] SUB .L1 A1,1,A1 ; <0,15>
|| [!A2] MV .S1X B4,A5 ; |119| <0,15> ^ Define a twin register
;** --------------------------------------------------------------------------*
L3: ; PIPED LOOP EPILOG
;** --------------------------------------------------------------------------*
MV .D1 A5,A4
|| MVC .S2 B5,CSR ; interrupts on
;** --------------------------------------------------------------------------*
L4:
;** -----------------------g4:
;** 121 ----------------------- return crc;
.line 10
.line 11
RET .S2 B3 ; |122|
NOP 5
; BRANCH OCCURS ; |122|
.endfunc 122,000000000h,0
;******************************************************************************
;* TYPE INFORMATION *
;******************************************************************************
.sym _Uint8, 0, 12, 13, 8
.sym _Uint16, 0, 13, 13, 16
.sym _Uint16, 0, 13, 13, 16
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -