📄 sine8_buf.asm
字号:
;******************************************************************************
;* TMS320C6x C/C++ Codegen PC v5.1.0 *
;* Date/Time created: Thu Apr 19 21:04:07 2007 *
;******************************************************************************
.compiler_opts --endian=little --mem_model:code=near --mem_model:data=far_aggregates --silicon_version=6200
;******************************************************************************
;* GLOBAL FILE PARAMETERS *
;* *
;* Architecture : TMS320C620x *
;* Optimization : Disabled *
;* Optimizing for : Compile time, Ease of Development *
;* Based on options: no -o, 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("sine8_buf.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)
;*****************************************************************************
;* CINIT RECORDS *
;*****************************************************************************
.sect ".cinit"
.align 8
.field 2,32
.field _loop+0,32
.field 0,16 ; _loop @ 0
.sect ".cinit"
.align 8
.field IR_1,32
.field _sine_table+0,32
.field 0,16 ; _sine_table[0] @ 0
.field 707,16 ; _sine_table[1] @ 16
.field 1000,16 ; _sine_table[2] @ 32
.field 707,16 ; _sine_table[3] @ 48
.field 0,16 ; _sine_table[4] @ 64
.field 64829,16 ; _sine_table[5] @ 80
.field 64536,16 ; _sine_table[6] @ 96
.field 64829,16 ; _sine_table[7] @ 112
IR_1: .set 16
.sect ".cinit"
.align 8
.field 2,32
.field _BUFFERLENGTH+0,32
.field 256,16 ; _BUFFERLENGTH @ 0
.sect ".cinit"
.align 8
.field 2,32
.field _i+0,32
.field 0,16 ; _i @ 0
DW$1 .dwtag DW_TAG_subprogram, DW_AT_name("output_sample"), DW_AT_symbol_name("_output_sample")
.dwattr DW$1, DW_AT_type(*DW$T$10)
.dwattr DW$1, DW_AT_declaration(0x01)
.dwattr DW$1, DW_AT_external(0x01)
DW$2 .dwtag DW_TAG_subprogram, DW_AT_name("comm_intr"), DW_AT_symbol_name("_comm_intr")
.dwattr DW$2, DW_AT_type(*DW$T$10)
.dwattr DW$2, DW_AT_declaration(0x01)
.dwattr DW$2, DW_AT_external(0x01)
.global _loop
.bss _loop,2,2
DW$3 .dwtag DW_TAG_variable, DW_AT_name("loop"), DW_AT_symbol_name("_loop")
.dwattr DW$3, DW_AT_location[DW_OP_addr _loop]
.dwattr DW$3, DW_AT_type(*DW$T$8)
.dwattr DW$3, DW_AT_external(0x01)
.global _sine_table
_sine_table: .usect ".far",16,4
DW$4 .dwtag DW_TAG_variable, DW_AT_name("sine_table"), DW_AT_symbol_name("_sine_table")
.dwattr DW$4, DW_AT_location[DW_OP_addr _sine_table]
.dwattr DW$4, DW_AT_type(*DW$T$20)
.dwattr DW$4, DW_AT_external(0x01)
.global _out_buffer
_out_buffer: .usect ".far",512,4
DW$5 .dwtag DW_TAG_variable, DW_AT_name("out_buffer"), DW_AT_symbol_name("_out_buffer")
.dwattr DW$5, DW_AT_location[DW_OP_addr _out_buffer]
.dwattr DW$5, DW_AT_type(*DW$T$21)
.dwattr DW$5, DW_AT_external(0x01)
.global _BUFFERLENGTH
.bss _BUFFERLENGTH,2,2
DW$6 .dwtag DW_TAG_variable, DW_AT_name("BUFFERLENGTH"), DW_AT_symbol_name("_BUFFERLENGTH")
.dwattr DW$6, DW_AT_location[DW_OP_addr _BUFFERLENGTH]
.dwattr DW$6, DW_AT_type(*DW$T$22)
.dwattr DW$6, DW_AT_external(0x01)
.global _i
.bss _i,2,2
DW$7 .dwtag DW_TAG_variable, DW_AT_name("i"), DW_AT_symbol_name("_i")
.dwattr DW$7, DW_AT_location[DW_OP_addr _i]
.dwattr DW$7, DW_AT_type(*DW$T$8)
.dwattr DW$7, DW_AT_external(0x01)
; C:\CCStudio_v3.1\C6000\cgtools\bin\acp6x.exe -@D:\DOCUME~1\n1\LOCALS~1\Temp\TI16012
.sect ".text"
.global _c_int11
DW$8 .dwtag DW_TAG_subprogram, DW_AT_name("c_int11"), DW_AT_symbol_name("_c_int11")
.dwattr DW$8, DW_AT_low_pc(_c_int11)
.dwattr DW$8, DW_AT_high_pc(0x00)
.dwattr DW$8, DW_AT_begin_file("sine8_buf.c")
.dwattr DW$8, DW_AT_begin_line(0x0a)
.dwattr DW$8, DW_AT_begin_column(0x10)
.dwpsn "sine8_buf.c",11,1
.dwfde DW$CIE
;----------------------------------------------------------------------
; 10 | interrupt void c_int11() //interrupt service routine
;----------------------------------------------------------------------
;******************************************************************************
;* FUNCTION NAME: _c_int11 *
;* *
;* Regs Modified : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,B0,B1,B2,B3,B4,B5,B6, *
;* B7,B8,B9,SP *
;* Regs Used : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,B0,B1,B2,B3,B4,B5,B6, *
;* B7,B8,B9,DP,SP *
;* Local Frame Size : 0 Args + 0 Auto + 84 Save = 84 byte *
;******************************************************************************
_c_int11:
;** --------------------------------------------------------------------------*
.dwcfa 0x0e, 0
.dwcfa 0x09, 126, 19
STW .D2T2 B9,*SP--(88) ; |11|
NOP 2
.dwcfa 0x0e, 88
.dwcfa 0x80, 25, 0
STW .D2T2 B8,*+SP(84) ; |11|
NOP 2
.dwcfa 0x80, 24, 1
STW .D2T2 B7,*+SP(80) ; |11|
NOP 2
.dwcfa 0x80, 23, 2
STW .D2T2 B6,*+SP(76) ; |11|
NOP 2
.dwcfa 0x80, 22, 3
STW .D2T2 B5,*+SP(72) ; |11|
NOP 2
.dwcfa 0x80, 21, 4
STW .D2T2 B4,*+SP(68) ; |11|
NOP 2
.dwcfa 0x80, 20, 5
STW .D2T2 B3,*+SP(64) ; |11|
NOP 2
.dwcfa 0x80, 19, 6
STW .D2T2 B2,*+SP(60) ; |11|
NOP 2
.dwcfa 0x80, 18, 7
STW .D2T2 B1,*+SP(56) ; |11|
NOP 2
.dwcfa 0x80, 17, 8
STW .D2T2 B0,*+SP(52) ; |11|
NOP 2
.dwcfa 0x80, 16, 9
STW .D2T1 A9,*+SP(48) ; |11|
NOP 2
.dwcfa 0x80, 9, 10
STW .D2T1 A8,*+SP(44) ; |11|
NOP 2
.dwcfa 0x80, 8, 11
STW .D2T1 A7,*+SP(40) ; |11|
NOP 2
.dwcfa 0x80, 7, 12
STW .D2T1 A6,*+SP(36) ; |11|
NOP 2
.dwcfa 0x80, 6, 13
STW .D2T1 A5,*+SP(32) ; |11|
NOP 2
.dwcfa 0x80, 5, 14
STW .D2T1 A4,*+SP(28) ; |11|
NOP 2
.dwcfa 0x80, 4, 15
STW .D2T1 A3,*+SP(24) ; |11|
NOP 2
.dwcfa 0x80, 3, 16
STW .D2T1 A2,*+SP(20) ; |11|
NOP 2
.dwcfa 0x80, 2, 17
STW .D2T1 A1,*+SP(16) ; |11|
NOP 2
.dwcfa 0x80, 1, 18
STW .D2T1 A0,*+SP(12) ; |11|
NOP 2
.dwcfa 0x80, 0, 19
.dwpsn "sine8_buf.c",12,3
;----------------------------------------------------------------------
; 12 | output_sample(sine_table[loop]); //output each sine value
;----------------------------------------------------------------------
LDH .D2T1 *+DP(_loop),A4 ; |12|
MVKL .S1 _sine_table,A3 ; |12|
MVKH .S1 _sine_table,A3 ; |12|
MVKL .S2 RL0,B3 ; |12|
CALL .S2 _output_sample ; |12|
LDH .D1T1 *+A3[A4],A4 ; |12|
MVKH .S2 RL0,B3 ; |12|
NOP 3
RL0: ; CALL OCCURS {_output_sample} ; |12|
.dwpsn "sine8_buf.c",13,3
;----------------------------------------------------------------------
; 13 | out_buffer[i] = sine_table[loop]; //output to buffer
;----------------------------------------------------------------------
LDH .D2T2 *+DP(_loop),B6 ; |13|
MVKL .S2 _sine_table,B4 ; |13|
MVKH .S2 _sine_table,B4 ; |13|
LDH .D2T2 *+DP(_i),B5 ; |13|
NOP 1
LDH .D2T2 *+B4[B6],B6 ; |13|
MVKL .S2 _out_buffer,B4 ; |13|
MVKH .S2 _out_buffer,B4 ; |13|
NOP 2
STH .D2T2 B6,*+B4[B5] ; |13|
NOP 2
.dwpsn "sine8_buf.c",14,3
;----------------------------------------------------------------------
; 14 | i++; //increment buffer count
;----------------------------------------------------------------------
LDH .D2T2 *+DP(_i),B4 ; |14|
NOP 4
ADD .L2 1,B4,B4 ; |14|
STH .D2T2 B4,*+DP(_i) ; |14|
NOP 2
.dwpsn "sine8_buf.c",15,3
;----------------------------------------------------------------------
; 15 | if (i == BUFFERLENGTH) i = 0; //if bottom reinit buffer count
;----------------------------------------------------------------------
LDH .D2T2 *+DP(_BUFFERLENGTH),B4 ; |15|
LDH .D2T2 *+DP(_i),B5 ; |15|
NOP 4
CMPEQ .L2 B5,B4,B0 ; |15|
[!B0] B .S1 L1 ; |15|
NOP 5
; BRANCHCC OCCURS {L1} ; |15|
;** --------------------------------------------------------------------------*
.dwpsn "sine8_buf.c",15,26
ZERO .L2 B4 ; |15|
STH .D2T2 B4,*+DP(_i) ; |15|
;** --------------------------------------------------------------------------*
L1:
.dwpsn "sine8_buf.c",16,3
;----------------------------------------------------------------------
; 16 | if (loop < 7) ++loop; //increment index loop
;----------------------------------------------------------------------
LDH .D2T2 *+DP(_loop),B4 ; |16|
NOP 4
CMPLT .L2 B4,7,B0 ; |16|
[!B0] B .S1 L2 ; |16|
NOP 5
; BRANCHCC OCCURS {L2} ; |16|
;** --------------------------------------------------------------------------*
.dwpsn "sine8_buf.c",16,17
LDH .D2T2 *+DP(_loop),B4 ; |16|
B .S1 L3 ; |16|
NOP 3
ADD .L2 1,B4,B4 ; |16|
STH .D2T2 B4,*+DP(_loop) ; |16|
; BRANCH OCCURS {L3} ; |16|
;** --------------------------------------------------------------------------*
L2:
.dwpsn "sine8_buf.c",17,8
;----------------------------------------------------------------------
; 17 | else loop = 0; //if end of buffer,reinit index
;----------------------------------------------------------------------
ZERO .L2 B4 ; |17|
STH .D2T2 B4,*+DP(_loop) ; |17|
NOP 1
.dwpsn "sine8_buf.c",18,3
;----------------------------------------------------------------------
; 18 | return;
;----------------------------------------------------------------------
;** --------------------------------------------------------------------------*
L3:
.dwpsn "sine8_buf.c",19,1
LDW .D2T2 *+SP(84),B8 ; |19|
NOP 4
.dwcfa 0xc0, 24
LDW .D2T2 *+SP(80),B7 ; |19|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -