📄 fft.asm
字号:
;******************************************************************************
;* TMS320C6x C/C++ Codegen PC v5.1.0 *
;* Date/Time created: Tue Mar 18 16:18:36 2008 *
;******************************************************************************
.compiler_opts --endian=little --mem_model:code=near --mem_model:data=far_aggregates --quiet --silicon_version=6710
;******************************************************************************
;* GLOBAL FILE PARAMETERS *
;* *
;* Architecture : TMS320C671x *
;* Optimization : Enabled at level 1 *
;* Optimizing for : Compile time 1st, speed 2nd *
;* Based on options: -o1, no -ms *
;* Endian : Little *
;* Interrupt Thrshld : Disabled *
;* Data Access Model : Far Aggregate Data *
;* Pipelining : Disabled *
;* Memory Aliases : Presume are aliases (pessimistic) *
;* Debug Info : DWARF Debug *
;* *
;******************************************************************************
.asg A15, FP
.asg B14, DP
.asg B15, SP
.global $bss
DW$CU .dwtag DW_TAG_compile_unit
.dwattr DW$CU, DW_AT_name("FFT.c")
.dwattr DW$CU, DW_AT_producer("TMS320C6x C/C++ Codegen PC v5.1.0 Copyright (c) 1996-2005 Texas Instruments Incorporated")
.dwattr DW$CU, DW_AT_stmt_list(0x00)
.dwattr DW$CU, DW_AT_TI_VERSION(0x01)
DW$1 .dwtag DW_TAG_variable, DW_AT_name("w"), DW_AT_symbol_name("_w")
.dwattr DW$1, DW_AT_type(*DW$T$25)
.dwattr DW$1, DW_AT_declaration(0x01)
.dwattr DW$1, DW_AT_external(0x01)
; D:\Program files\ccs\C6000\cgtools\bin\opt6x.exe C:\DOCUME~1\axxxz\LOCALS~1\Temp\TI4082 C:\DOCUME~1\axxxz\LOCALS~1\Temp\TI4084
.sect ".text"
.global _FFT
DW$2 .dwtag DW_TAG_subprogram, DW_AT_name("FFT"), DW_AT_symbol_name("_FFT")
.dwattr DW$2, DW_AT_low_pc(_FFT)
.dwattr DW$2, DW_AT_high_pc(0x00)
.dwattr DW$2, DW_AT_begin_file("FFT.c")
.dwattr DW$2, DW_AT_begin_line(0x07)
.dwattr DW$2, DW_AT_begin_column(0x06)
.dwpsn "FFT.c",8,1
.dwfde DW$CIE
;******************************************************************************
;* FUNCTION NAME: _FFT *
;* *
;* Regs Modified : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,B0,B1, *
;* B2,B3,B4,B5,B6,B7,B8,B9,SP *
;* Regs Used : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,B0,B1, *
;* B2,B3,B4,B5,B6,B7,B8,B9,SP *
;* Local Frame Size : 0 Args + 0 Auto + 20 Save = 20 byte *
;******************************************************************************
;******************************************************************************
;* *
;* Using -g (debug) with optimization (-o1) may disable key optimizations! *
;* *
;******************************************************************************
_FFT:
;** --------------------------------------------------------------------------*
.dwcfa 0x0e, 0
.dwcfa 0x09, 126, 19
STW .D2T2 B3,*SP--(24) ; |8|
.dwcfa 0x0e, 24
.dwcfa 0x80, 19, 0
STW .D2T1 A13,*+SP(20) ; |8|
.dwcfa 0x80, 13, 1
STW .D2T1 A12,*+SP(16) ; |8|
.dwcfa 0x80, 12, 2
STW .D2T1 A11,*+SP(12) ; |8|
.dwcfa 0x80, 11, 3
STW .D2T1 A10,*+SP(8) ; |8|
.dwcfa 0x80, 10, 4
DW$3 .dwtag DW_TAG_formal_parameter, DW_AT_name("Y"), DW_AT_symbol_name("_Y")
.dwattr DW$3, DW_AT_type(*DW$T$21)
.dwattr DW$3, DW_AT_location[DW_OP_reg4]
DW$4 .dwtag DW_TAG_formal_parameter, DW_AT_name("N"), DW_AT_symbol_name("_N")
.dwattr DW$4, DW_AT_type(*DW$T$10)
.dwattr DW$4, DW_AT_location[DW_OP_reg20]
DW$5 .dwtag DW_TAG_variable, DW_AT_name("N"), DW_AT_symbol_name("_N")
.dwattr DW$5, DW_AT_type(*DW$T$23)
.dwattr DW$5, DW_AT_location[DW_OP_reg9]
DW$6 .dwtag DW_TAG_variable, DW_AT_name("Y"), DW_AT_symbol_name("_Y")
.dwattr DW$6, DW_AT_type(*DW$T$24)
.dwattr DW$6, DW_AT_location[DW_OP_reg10]
DW$7 .dwtag DW_TAG_variable, DW_AT_name("i"), DW_AT_symbol_name("_i")
.dwattr DW$7, DW_AT_type(*DW$T$10)
.dwattr DW$7, DW_AT_location[DW_OP_reg0]
DW$8 .dwtag DW_TAG_variable, DW_AT_name("j"), DW_AT_symbol_name("_j")
.dwattr DW$8, DW_AT_type(*DW$T$10)
.dwattr DW$8, DW_AT_location[DW_OP_reg3]
DW$9 .dwtag DW_TAG_variable, DW_AT_name("k"), DW_AT_symbol_name("_k")
.dwattr DW$9, DW_AT_type(*DW$T$10)
.dwattr DW$9, DW_AT_location[DW_OP_reg4]
DW$10 .dwtag DW_TAG_variable, DW_AT_name("upper_leg"), DW_AT_symbol_name("_upper_leg")
.dwattr DW$10, DW_AT_type(*DW$T$10)
.dwattr DW$10, DW_AT_location[DW_OP_reg4]
DW$11 .dwtag DW_TAG_variable, DW_AT_name("leg_diff"), DW_AT_symbol_name("_leg_diff")
.dwattr DW$11, DW_AT_type(*DW$T$10)
.dwattr DW$11, DW_AT_location[DW_OP_reg5]
DW$12 .dwtag DW_TAG_variable, DW_AT_name("num_stages"), DW_AT_symbol_name("_num_stages")
.dwattr DW$12, DW_AT_type(*DW$T$10)
.dwattr DW$12, DW_AT_location[DW_OP_reg25]
DW$13 .dwtag DW_TAG_variable, DW_AT_name("index"), DW_AT_symbol_name("_index")
.dwattr DW$13, DW_AT_type(*DW$T$10)
.dwattr DW$13, DW_AT_location[DW_OP_reg21]
DW$14 .dwtag DW_TAG_variable, DW_AT_name("step"), DW_AT_symbol_name("_step")
.dwattr DW$14, DW_AT_type(*DW$T$10)
.dwattr DW$14, DW_AT_location[DW_OP_reg22]
DW$15 .dwtag DW_TAG_variable, DW_AT_name("CSU"), DW_AT_symbol_name("CSU$temp2$imag")
.dwattr DW$15, DW_AT_type(*DW$T$16)
.dwattr DW$15, DW_AT_location[DW_OP_reg2]
DW$16 .dwtag DW_TAG_variable, DW_AT_name("CSU"), DW_AT_symbol_name("CSU$temp2$real")
.dwattr DW$16, DW_AT_type(*DW$T$16)
.dwattr DW$16, DW_AT_location[DW_OP_reg1]
DW$17 .dwtag DW_TAG_variable, DW_AT_name("CSU"), DW_AT_symbol_name("CSU$temp1$imag")
.dwattr DW$17, DW_AT_type(*DW$T$16)
.dwattr DW$17, DW_AT_location[DW_OP_reg13]
DW$18 .dwtag DW_TAG_variable, DW_AT_name("CSU"), DW_AT_symbol_name("CSU$temp1$real")
.dwattr DW$18, DW_AT_type(*DW$T$16)
.dwattr DW$18, DW_AT_location[DW_OP_reg12]
MV .L1X B4,A9 ; |8|
|| MV .S1 A4,A10 ; |8|
.dwpsn "FFT.c",13,6
ZERO .L2 B9 ; |13|
.dwpsn "FFT.c",15,2
MVK .S1 0x1,A0 ; |15|
;*----------------------------------------------------------------------------*
;* SOFTWARE PIPELINE INFORMATION
;* Disqualified loop: Software pipelining disabled
;*----------------------------------------------------------------------------*
L1:
DW$L$_FFT$2$B:
.dwpsn "FFT.c",18,4
ADD .L2 1,B9,B9 ; |18|
.dwpsn "FFT.c",20,11
ADD .L1 A0,A0,A0 ; |20|
CMPEQ .L1 A0,A9,A1 ; |20|
[!A1] B .S1 L1 ; |20|
NOP 5
; BRANCHCC OCCURS {L1} ; |20|
DW$L$_FFT$2$E:
;** --------------------------------------------------------------------------*
.dwpsn "FFT.c",21,2
SHRU .S2X A9,31,B5 ; |21|
ADD .L1X A9,B5,A3 ; |21|
SHR .S1 A3,1,A5 ; |21|
.dwpsn "FFT.c",22,2
CALL .S1 __divi ; |22|
|| MVKL .S2 RL0,B3 ; |22|
MVKH .S2 RL0,B3 ; |22|
MVK .S1 0x200,A4 ; |22|
NOP 3
RL0: ; CALL OCCURS {__divi} ; |22|
;** --------------------------------------------------------------------------*
MV .L2X A4,B6 ; |22|
.dwpsn "FFT.c",23,7
ZERO .L1 A0 ; |23|
.dwpsn "FFT.c",23,13
CMPGT .L2 B9,0,B0 ; |23|
[!B0] B .S1 L7 ; |23|
NOP 5
; BRANCHCC OCCURS {L7} ; |23|
;** --------------------------------------------------------------------------*
;** BEGIN LOOP L2
;** --------------------------------------------------------------------------*
L2:
DW$L$_FFT$5$B:
.dwpsn "FFT.c",25,4
ZERO .L2 B5 ; |25|
.dwpsn "FFT.c",26,9
ZERO .L1 A3 ; |26|
.dwpsn "FFT.c",26,16
CMPGT .L1 A5,0,A1 ; |26|
[!A1] B .S1 L6 ; |26|
NOP 5
; BRANCHCC OCCURS {L6} ; |26|
DW$L$_FFT$5$E:
;** --------------------------------------------------------------------------*
;** BEGIN LOOP L3
;** --------------------------------------------------------------------------*
L3:
DW$L$_FFT$6$B:
.dwpsn "FFT.c",28,11
MV .L1 A3,A4 ; |28|
.dwpsn "FFT.c",28,26
CMPLT .L1 A4,A9,A1 ; |28|
[!A1] B .S1 L5 ; |28|
NOP 5
; BRANCHCC OCCURS {L5} ; |28|
DW$L$_FFT$6$E:
;*----------------------------------------------------------------------------*
;* SOFTWARE PIPELINE INFORMATION
;* Disqualified loop: Software pipelining disabled
;*----------------------------------------------------------------------------*
L4:
DW$L$_FFT$7$B:
.dwpsn "FFT.c",31,3
ADD .L1 A5,A4,A6 ; |31|
|| ADDAD .D1 A10,A4,A8 ; |31|
ADDAD .D1 A10,A6,A7 ; |31|
LDW .D1T1 *A7,A1 ; |31|
LDW .D1T1 *A8,A6 ; |31|
NOP 4
ADDSP .L1 A1,A6,A12 ; |31|
.dwpsn "FFT.c",32,8
LDW .D1T1 *+A7(4),A2 ; |32|
LDW .D1T1 *+A8(4),A11 ; |32|
NOP 4
ADDSP .L1 A2,A11,A13 ; |32|
.dwpsn "FFT.c",33,8
SUBSP .L1 A6,A1,A1 ; |33|
.dwpsn "FFT.c",34,8
SUBSP .L1 A11,A2,A2 ; |34|
.dwpsn "FFT.c",35,8
MVKL .S2 _w,B4 ; |35|
MVKH .S2 _w,B4 ; |35|
ADDAD .D2 B4,B5,B7 ; |35|
LDW .D2T2 *B7,B4 ; |35|
LDW .D2T2 *+B7(4),B8 ; |35|
NOP 3
MPYSP .M1X A1,B4,A6 ; |35|
MPYSP .M1X A2,B8,A11 ; |35|
NOP 3
SUBSP .L1 A6,A11,A6 ; |35|
NOP 3
STW .D1T1 A6,*A7 ; |35|
.dwpsn "FFT.c",37,8
LDW .D2T2 *+B7(4),B4 ; |37|
LDW .D2T2 *B7,B7 ; |37|
NOP 3
MPYSP .M2X A1,B4,B4 ; |37|
MPYSP .M2X A2,B7,B7 ; |37|
NOP 3
ADDSP .L2 B7,B4,B4 ; |37|
NOP 3
STW .D1T2 B4,*+A7(4) ; |37|
.dwpsn "FFT.c",39,8
STW .D1T1 A12,*A8 ; |39|
.dwpsn "FFT.c",40,8
STW .D1T1 A13,*+A8(4) ; |40|
.dwpsn "FFT.c",28,41
ADDAH .D1 A4,A5,A4 ; |28|
.dwpsn "FFT.c",28,26
CMPLT .L1 A4,A9,A1 ; |28|
[ A1] B .S1 L4 ; |28|
NOP 5
; BRANCHCC OCCURS {L4} ; |28|
DW$L$_FFT$7$E:
;** --------------------------------------------------------------------------*
L5:
DW$L$_FFT$8$B:
.dwpsn "FFT.c",42,4
ADD .L2 B6,B5,B5 ; |42|
.dwpsn "FFT.c",26,16
ADD .L1 1,A3,A3 ; |26|
CMPLT .L1 A3,A5,A1 ; |26|
[ A1] B .S1 L3 ; |26|
NOP 5
; BRANCHCC OCCURS {L3} ; |26|
DW$L$_FFT$8$E:
;** --------------------------------------------------------------------------*
L6:
DW$L$_FFT$9$B:
.dwpsn "FFT.c",44,6
SHRU .S1 A5,31,A3 ; |44|
ADD .L1 A5,A3,A3 ; |44|
SHR .S1 A3,1,A5 ; |44|
.dwpsn "FFT.c",45,6
ADD .L2 B6,B6,B6 ; |45|
.dwpsn "FFT.c",23,13
ADD .L1 1,A0,A0 ; |23|
CMPLT .L2X A0,B9,B0 ; |23|
[ B0] B .S1 L2 ; |23|
NOP 5
; BRANCHCC OCCURS {L2} ; |23|
DW$L$_FFT$9$E:
;** --------------------------------------------------------------------------*
L7:
.dwpsn "FFT.c",47,8
ZERO .L1 A3 ; |47|
.dwpsn "FFT.c",48,13
MVK .S1 0x1,A0 ; |48|
.dwpsn "FFT.c",48,20
CMPLT .L1 A9,3,A1 ; |48|
[ A1] B .S1 L11 ; |48|
NOP 5
; BRANCHCC OCCURS {L11} ; |48|
;** --------------------------------------------------------------------------*
;** BEGIN LOOP L8
;** --------------------------------------------------------------------------*
L8:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -