📄 cfft32c.lst
字号:
395 MOVL P,XT ; P=(R3-R4)/2
396 ADDL ACC,P<<PM ; ACC=ACC=(I1-I2+R3-R4)/4
397 MOVL *XAR4,ACC ; I4'=(I1-I2+R3-R4)/4
398 NOP *0++
399 SUBL ACC,P ; ACC=(I1-I2-R3+R4)/4
400 MOVL *XAR2,ACC ; I2'=(I1-I2-R3+R4)/4
401 NOP *0++
402 .endm
403
404 ;====================================================================
405 ; Function Local Frame
406 ;====================================================================
407 ; |_______|
408 ; |_______|<- Stack Pointer (SP) <---SP
409 ; |_______|<- GLCB (SP-1)
410 ; |_______|<- BLC (Butterfly loop counter) (SP-2)
411 ; |_______|<- GLC (Group loop counter) (SP-3)
412 ; |_______|<- SLC (Stage loop counter) (SP-4)
413 ; |_______|<- TOST (Twiddle offset, for decimation) (SP-5)
414 ; |_______|<- DOST (Data offset) (SP-6)
415 ; |_______|<- TEMP (SP-7) & (SP-8)
416 ;===================================================================
417 000A FFT_LOCAL_FRAME .set 10
418 0001 GLCB .set 1
419 0002 BLC .set 2
420 0003 GLC .set 3
421 0004 SLC .set 4
422 0005 TOST .set 5
423 0006 DOST .set 6
424 0008 TEMP .set 8
425 0009 WRWIOST .set 9
426
427
428 00000000 _CFFT32_calc:
429 00000000 B2BD PUSH XAR1 ; Context Save
430 00000001 AABD PUSH XAR2
431 00000002 A2BD PUSH XAR3
432 00000003 FE0A ADDB SP,#FFT_LOCAL_FRAME ; Create Local Frame
433
434 00000004 3B01 SETC SXM
435 00000005 FF6A SPM -1 ; SPM set to 1bit right shift
436
437 00000006 C5A4 MOVL XAR7,XAR4 ; XAR7->FFT_handle
438 00000007 86C7 MOVL XAR2,*XAR7 ; XAR2=ipcbptr
439 00000008 82A2 MOVL XAR3,XAR2 ; XAR3=ipcbptr
440 00000009 8AA2 MOVL XAR4,XAR2 ; XAR4=ipcbptr
TMS320C2000 COFF Assembler PC Version 3.06 Fri Nov 07 10:50:04 2003
Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
cfft32c.asm PAGE 9
441
442 0000000a C4A2 MOVL XAR6,XAR2 ; XAR6=ipcbptr
443 0000000b DA04 ADDB XAR2,#4 ; XAR2=ipcbptr+4
444 0000000c DB08 ADDB XAR3,#8 ; XAR3=ipcbptr+8
445 0000000d DC0C ADDB XAR4,#12 ; XAR4=ipcbptr+12
446 0000000e D00E MOVB XAR0,#14 ; XAR0=14
447
448 ;-----------------------------------------------------------------
449 ; Stage 1 & 2 - Using the RADIX 4 COMBO Macro
450 ;-----------------------------------------------------------------
451 0000000f C342 MOVL *-SP[2],XAR7 ; (SP-2)=FFT_handle
452 00000010 5603 MOV ACC,*+XAR7[4]<<14
00000011 0EE7
453 00000012 FF0E SUB ACC,#1<<14
00000013 0001
454 00000014 97A7 MOV AR7,AH ; Loop (N/4 - 1) times
455
456 00000015 STAGE1_2_LP:
457 00000015 COMBO
1 00000015 06C3 MOVL ACC,*XAR3 ; ACC=R3 R1 R2 R3 R4
1 00000016 FF40 SFR ACC,#1 ; ACC=R3/2
1 00000017 A3C4 MOVL P,*XAR4 ; P=R4
1 00000018 11AC SUBL ACC,P<<PM ; ACC=(R3-R4)/2
1 00000019 1EAC MOVL XT,ACC ; T=(R3-R4)/2
1 0000001a 07AB ADDL ACC,P ; ACC=(R3+R4)/2
1 0000001b 8BA9 MOVL XAR1,ACC ; XAR1=(R3+R4)/2
1
1 0000001c 06C6 MOVL ACC,*XAR6 ; ACC=R1
1 0000001d FF40 SFR ACC,#1 ; ACC=R1/2
1 0000001e A3C2 MOVL P,*XAR2 ; P=R2
1 0000001f 11AC SUBL ACC,P<<PM ; ACC=R1-R2/2
1 00000020 1E48 MOVL *-SP[TEMP],ACC ; temp=(R1-R2)/2
1 00000021 07C2 ADDL ACC,*XAR2 ; ACC=(R1+R2)/2
1
1 00000022 FF40 SFR ACC,#1 ; ACC=(R1+R2)/4
1 00000023 B2AB MOVL P,XAR1 ; P=(R3+R4)/2
1 00000024 10AC ADDL ACC,P<<PM ; ACC=(R1+R2+R3+R4)/4
1 00000025 1E86 MOVL *XAR6++,ACC ; R1'=(R1+R2+R3+R4)/4
1 00000026 03AB SUBL ACC,P ; ACC=(R1+R2-R3-R4)/4
1 00000027 1E83 MOVL *XAR3++,ACC ; R3'=(R1+R2-R3-R4)/4
1
1 00000028 06C3 MOVL ACC,*XAR3 ; ACC=I3
1 00000029 FF40 SFR ACC,#1 ; ACC=I3/2
1 0000002a A3D4 MOVL P,*+XAR4[2] ; P=I4
1 0000002b 11AC SUBL ACC,P<<PM ; ACC=(I3-I4)/2
1 0000002c 8BA9 MOVL XAR1,ACC ; XAR1=(I3-I4)/2
1 0000002d 07AB ADDL ACC,P ; ACC=(I3+I4)/2
1 0000002e 83A9 MOVL XAR5,ACC ; XAR5=(I3+I4)/2
1
1 0000002f 0648 MOVL ACC,*-SP[TEMP] ; ACC=(R1-R2)/2
1 00000030 FF40 SFR ACC,#1 ; ACC=(R1-R2)/4
1 00000031 B2AB MOVL P,XAR1 ; P=(I3-I4)/2
1 00000032 10AC ADDL ACC,P<<PM ; ACC=(R1-R2+I3-I4)/4
1 00000033 1E82 MOVL *XAR2++,ACC ; R2'=(R1-R2+I3-I4)/4
1 00000034 03AB SUBL ACC,P ; ACC=(R1-R2-I3+I4)/4
TMS320C2000 COFF Assembler PC Version 3.06 Fri Nov 07 10:50:04 2003
Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
cfft32c.asm PAGE 10
1 00000035 1E84 MOVL *XAR4++,ACC ; R4'=(R1-R2-I3+I4)/4
1
1 00000036 06C6 MOVL ACC,*XAR6 ; ACC=I1
1 00000037 FF40 SFR ACC,#1 ; ACC=I1/2
1 00000038 A3C2 MOVL P,*XAR2 ; P=I2
1 00000039 11AC SUBL ACC,P<<PM ; ACC=(I1-I2)/2
1 0000003a 1E48 MOVL *-SP[TEMP],ACC ; temp=(I1-I2)/2
1 0000003b 07AB ADDL ACC,P ; ACC=(I1+I2)/2
1
1 0000003c FF40 SFR ACC,#1 ; ACC=(I1+I2)/4
1 0000003d A0AB MOVL P,XAR5 ; P=(I3+I4)/2
1 0000003e 10AC ADDL ACC,P<<PM ; ACC=(I1+I2+I3+I4)/4
1 0000003f 1EC6 MOVL *XAR6,ACC ; I1'=(I1+I2+I3+I4)/4
1 00000040 77BB NOP *0++
1 00000041 03AB SUBL ACC,P ; ACC=(I1+I2-I3-I4)/4
1 00000042 1EC3 MOVL *XAR3,ACC ; I3'=(I1+I2-I3-I4)/4
1 00000043 77BB NOP *0++
1
1
1 00000044 0648 MOVL ACC,*-SP[TEMP] ; ACC=(I1-I2)/2
1 00000045 FF40 SFR ACC,#1 ; ACC=(I1-I2)/4
1 00000046 ABAB MOVL P,XT ; P=(R3-R4)/2
1 00000047 10AC ADDL ACC,P<<PM ; ACC=ACC=(I1-I2+R3-R4)/4
1 00000048 1EC4 MOVL *XAR4,ACC ; I4'=(I1-I2+R3-R4)/4
1 00000049 77BB NOP *0++
1 0000004a 03AB SUBL ACC,P ; ACC=(I1-I2-R3+R4)/4
1 0000004b 1EC2 MOVL *XAR2,ACC ; I2'=(I1-I2-R3+R4)/4
1 0000004c 77BB NOP *0++
458 0000004d 000F BANZ STAGE1_2_LP,AR7--
0000004e FFC8
459
460 ;------------------------------------------------------------------
461 ; Stage 3 - Using ZEROI, PBY4I,PBY2I,P3BY4I Macros
462 ;------------------------------------------------------------------
463 0000004f C542 MOVL XAR7,*-SP[2] ; XAR7=FFT_handle
464 00000050 C4C7 MOVL XAR6,*XAR7 ; XAR6=ipcbptr
465 00000051 86C7 MOVL XAR2,*XAR7 ; XAR2=ipcbptr
466 00000052 DA10 ADDB XAR2,#16 ; XAR2=ipcbptr+16
467 00000053 D012 MOVB XAR0,#18
468
469 00000054 28A9 MOV AL,#COS45K_LSW
00000055 799B
470 00000056 28A8 MOV AH,#COS45K_MSW
00000057 5A82
471 00000058 1EAC MOVL XT,ACC ; XT=COS(45) in Q31 format
472
473 00000059 5603 MOV ACC,*+XAR7[4]<<13
0000005a 0DE7
474 0000005b FF0D SUB ACC,#1<<13
0000005c 0001
475 0000005d 97A1 MOV AR1,AH ; Loop (N/8 - 1) times
476
477 0000005e STAGE3_LP: ZEROI
1 0000005e 06C6 MOVL ACC,*XAR6 ; ACC:=PR PR QR
1 0000005f FF40 SFR ACC,#1 ; ACC:=PR/2 PR QR
TMS320C2000 COFF Assembler PC Version 3.06 Fri Nov 07 10:50:04 2003
Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
cfft32c.asm PAGE 11
1 00000060 A3C2 MOVL P,*XAR2 ; P=QR PR QR
1 00000061 10AC ADDL ACC,P<<PM ; ACC=PR+QR/2 PR QR
1 00000062 1E86 MOVL *XAR6++,ACC ; PR':=(PR+QR)/2 PI QR
1 00000063 03AB SUBL ACC,P ; ACC:=(PR-QR)/2 PI QR
1 00000064 1E82 MOVL *XAR2++,ACC ; QR':=(PR-QR)/2 PI QI
1
1 00000065 06C6 MOVL ACC,*XAR6 ; ACC:=PI PI QI
1 00000066 FF40 SFR ACC,#1 ; ACC:=PI/2 PI QI
1 00000067 A3C2 MOVL P,*XAR2 ; P=QI PI QI
1 00000068 10AC ADDL ACC,P<<PM ; ACC:=(PI+QI)/2 PI QI
1 00000069 1E86 MOVL *XAR6++,ACC ; PI':=(PI+QI)/2 PR+1 QI
1 0000006a 03AB SUBL ACC,P ; ACC:=(PI-QI)/2 PR+1 QI
1 0000006b 1E82 MOVL *XAR2++,ACC ; QR':=(PI-QI)/2 PR+1 QR+1
478 0000006c PBY4I
1 ; - PR QR
1 0000006c 06C6 MOVL ACC,*XAR6 ; ACC=PR - PR QR
1 0000006d FF40 SFR ACC,#1 ; ACC=PR/2 - PR QR
1 0000006e 5667 QMPYL P,XT,*XAR2 ; PREG=W*QR/2 W*QR/2 PR QR
0000006f 00C2
1 00000070 03AB SUBL ACC,P ; ACC=(PR-W*QR)/2 W*QR/2 PR QR
1 00000071 A9A5 MOVL XAR5,P ; XAR5=W*QR/2
1 00000072 5667 QMPYL P,XT,*+XAR2[2] ; ACC=(PR-W*QR)/2 W*QI/2 PR QR
00000073 00D2
1 00000074 03AB SUBL ACC,P ; ACC=(PR-W*QI-W*QR)/2 W*QI/2 PR QR
1 00000075 1E82 MOVL *XAR2++,ACC ; QR'=(PR-W*QI-W*QR)/2 W*QI/2 PR QI
1 00000076 FF54 NEG ACC ; ACC=-(PR-W*QI-W*QR)/2 W*QI/2 PR QI
1 00000077 5601 ADDL *XAR6++,ACC ; PR'=(PR+W*QI+W*QR)/2 W*QI/2 PI QI
00000078 0086
1
1 00000079 06C6 MOVL ACC,*XAR6 ; ACC=PI W*QI/2 PI QI
1 0000007a FF40 SFR ACC,#1 ; ACC=PI/2 W*QI/2 PI QI
1 0000007b 03AB SUBL ACC,P ; ACC=(PI-W*QI)/2 W*QI/2 PI QI
1 0000007c 07A5 ADDL ACC,XAR5 ; ACC=(PI-W*QI+W*QR)/2 W*QR/2 PI QI
1 0000007d 1E82 MOVL *XAR2++,ACC ; QI'=(PI-W*QI+W*QR)/2 W*QR/2 PI QR+1
1 0000007e FF54 NEG ACC ; ACC=-(PI-W*QI+W*QR)/2 W*QR/2 PI QR+1
1 0000007f 5601 ADDL *XAR6++,ACC ; PI'=(PI+W*QI-W*QR)/2 W*QR/2 PR+1 QR+1
00000080 0086
479 00000081 PBY2I
1
1 00000081 8382 MOVL XAR5,*XAR2++ ; XAR5=QR PR QI
1 00000082 06C6 MOVL ACC,*XAR6 ; ACC:=PR PR QI
1 00000083 FF40 SFR ACC,#1 ; ACC:=PR/2 PR QI
1 00000084 A3C2 MOVL P,*XAR2 ; P:=QI PR QI
1 00000085 10AC ADDL ACC,P<<PM ; ACC:=(PR+QI)/2 PR QI
1 00000086 1E86 MOVL *XAR6++,ACC ; PR':=(PR+QI)/2 PI QI
1 00000087 03AB SUBL ACC,P ; ACC:=(PR-QI)/2 PI QI
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -