⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 my_convert.asm

📁 实现于SEED VPM642 V1.2平台的jpeg loopback
💻 ASM
📖 第 1 页 / 共 3 页
字号:
;******************************************************************************
;* TMS320C6x C/C++ Codegen                                          PC v5.0.0 *
;* Date/Time created: Fri Mar 31 17:58:12 2006                                *
;******************************************************************************
	.compiler_opts --endian=little --memory_model=all_far --quiet --silicon_version=6400 

;******************************************************************************
;* GLOBAL FILE PARAMETERS                                                     *
;*                                                                            *
;*   Architecture      : TMS320C64xx                                          *
;*   Optimization      : Enabled at level 3                                   *
;*   Optimizing for    : Speed                                                *
;*                       Based on options: -o3, no -ms                        *
;*   Endian            : Little                                               *
;*   Interrupt Thrshld : Disabled                                             *
;*   Memory Model      : Large                                                *
;*   Calls to RTS      : Far                                                  *
;*   Pipelining        : Enabled                                              *
;*   Speculative Load  : Enabled                                              *
;*   Memory Aliases    : Presume not aliases (optimistic)                     *
;*   Debug Info        : Optimized w/Profiling Info                           *
;*                                                                            *
;******************************************************************************

	.asg	A15, FP
	.asg	B14, DP
	.asg	B15, SP
	.global	$bss


DW$CU	.dwtag  DW_TAG_compile_unit
	.dwattr DW$CU, DW_AT_name("my_convert.c")
	.dwattr DW$CU, DW_AT_producer("TMS320C6x C/C++ Codegen PC v5.0.0 Copyright (c) 1996-2004 Texas Instruments Incorporated")
	.dwattr DW$CU, DW_AT_stmt_list(0x00)
	.dwattr DW$CU, DW_AT_TI_VERSION(0x01)

DW$1	.dwtag  DW_TAG_subprogram, DW_AT_name("DAT_copy"), DW_AT_symbol_name("_DAT_copy")
	.dwattr DW$1, DW_AT_type(*DW$T$19)
	.dwattr DW$1, DW_AT_declaration(0x01)
	.dwattr DW$1, DW_AT_external(0x01)
DW$2	.dwtag  DW_TAG_formal_parameter, DW_AT_type(*DW$T$3)
DW$3	.dwtag  DW_TAG_formal_parameter, DW_AT_type(*DW$T$3)
DW$4	.dwtag  DW_TAG_formal_parameter, DW_AT_type(*DW$T$31)
	.dwendtag DW$1


DW$5	.dwtag  DW_TAG_subprogram, DW_AT_name("DAT_wait"), DW_AT_symbol_name("_DAT_wait")
	.dwattr DW$5, DW_AT_declaration(0x01)
	.dwattr DW$5, DW_AT_external(0x01)
DW$6	.dwtag  DW_TAG_formal_parameter, DW_AT_type(*DW$T$19)
	.dwendtag DW$5

	.global	_int_mem_temp
_int_mem_temp:	.usect	".user_data_int",720,128
DW$7	.dwtag  DW_TAG_variable, DW_AT_name("int_mem_temp"), DW_AT_symbol_name("_int_mem_temp")
	.dwattr DW$7, DW_AT_location[DW_OP_addr _int_mem_temp]
	.dwattr DW$7, DW_AT_type(*DW$T$29)
	.dwattr DW$7, DW_AT_external(0x01)
;	C:\CCStudio\C6000\cgtools\bin\opt6x.exe C:\DOCUME~1\new\LOCALS~1\Temp\TI2362 C:\DOCUME~1\new\LOCALS~1\Temp\TI2365 

	.sect	".text"
	.global	_yuv422to420

DW$8	.dwtag  DW_TAG_subprogram, DW_AT_name("yuv422to420"), DW_AT_symbol_name("_yuv422to420")
	.dwattr DW$8, DW_AT_low_pc(_yuv422to420)
	.dwattr DW$8, DW_AT_high_pc(0x00)
	.dwattr DW$8, DW_AT_begin_file("my_convert.c")
	.dwattr DW$8, DW_AT_begin_line(0x0e)
	.dwattr DW$8, DW_AT_begin_column(0x06)
	.dwattr DW$8, DW_AT_frame_base[DW_OP_breg31 48]
	.dwattr DW$8, DW_AT_skeletal(0x01)
	.dwpsn	"my_convert.c",16,1

;******************************************************************************
;* FUNCTION NAME: _yuv422to420                                                *
;*                                                                            *
;*   Regs Modified     : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,   *
;*                           A15,B0,B1,B2,B3,B4,B5,B6,B7,B8,B9,B10,B11,B12,   *
;*                           B13,SP,A16,A17,A18,A19,A20,A21,A22,A23,A24,A25,  *
;*                           A26,A27,A28,A29,A30,A31,B16,B17,B18,B19,B20,B21, *
;*                           B22,B23,B24,B25,B26,B27,B28,B29,B30,B31          *
;*   Regs Used         : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,   *
;*                           A15,B0,B1,B2,B3,B4,B5,B6,B7,B8,B9,B10,B11,B12,   *
;*                           B13,SP,A16,A17,A18,A19,A20,A21,A22,A23,A24,A25,  *
;*                           A26,A27,A28,A29,A30,A31,B16,B17,B18,B19,B20,B21, *
;*                           B22,B23,B24,B25,B26,B27,B28,B29,B30,B31          *
;*   Local Frame Size  : 0 Args + 0 Auto + 44 Save = 44 byte                  *
;******************************************************************************
_yuv422to420:
;** --------------------------------------------------------------------------*
DW$9	.dwtag  DW_TAG_formal_parameter, DW_AT_name("frameIn"), DW_AT_symbol_name("_frameIn")
	.dwattr DW$9, DW_AT_type(*DW$T$24)
	.dwattr DW$9, DW_AT_location[DW_OP_reg4]
DW$10	.dwtag  DW_TAG_formal_parameter, DW_AT_name("frm_out"), DW_AT_symbol_name("_frm_out")
	.dwattr DW$10, DW_AT_type(*DW$T$24)
	.dwattr DW$10, DW_AT_location[DW_OP_reg20]
DW$11	.dwtag  DW_TAG_formal_parameter, DW_AT_name("width"), DW_AT_symbol_name("_width")
	.dwattr DW$11, DW_AT_type(*DW$T$10)
	.dwattr DW$11, DW_AT_location[DW_OP_reg6]
DW$12	.dwtag  DW_TAG_formal_parameter, DW_AT_name("height"), DW_AT_symbol_name("_height")
	.dwattr DW$12, DW_AT_type(*DW$T$10)
	.dwattr DW$12, DW_AT_location[DW_OP_reg22]
           MV      .D1X    SP,A31            ; |16| 

           STW     .D2T1   A15,*SP--(48)     ; |16| 
||         MV      .D1X    B6,A0

   [!A0]   B       .S1     L2                ; |28| 
||         STW     .D1T1   A14,*-A31(24)
||         STDW    .D2T2   B13:B12,*+SP(40)

           STDW    .D1T1   A13:A12,*-A31(32)
||         STDW    .D2T2   B11:B10,*+SP(32)
||         MVK     .S1     0x2d0,A15

           STW     .D2T2   B3,*+SP(28)
|| [!A0]   MVKL    .S1     _int_mem_temp,A15
||         STDW    .D1T1   A11:A10,*-A31(40)
||         MV      .S2     B6,B13            ; |16| 

           LDW     .D1T1   *+A4(4),A14       ; |18| 
||         LDW     .D2T2   *B4,B11           ; |21| 
||         MVKL    .S1     _int_mem_temp,A12

           LDW     .D1T1   *+A4(8),A11       ; |19| 
|| [!A0]   MV      .L1X    B13,A3
||         MVKH    .S1     _int_mem_temp,A12
||         LDW     .D2T2   *+B4(4),B12       ; |22| 
|| [ A0]   MVKL    .S2     _DAT_copy,B5      ; |30| 

   [!A0]   SHR     .S1     A3,1,A0           ; |35| 
||         LDW     .D1T1   *A4,A13           ; |17| 
||         LDW     .D2T2   *+B4(8),B10       ; |23| 
||         MV      .L1X    B6,A10            ; |16| 
|| [ A0]   MVKH    .S2     _DAT_copy,B5      ; |30| 

           ; BRANCHCC OCCURS {L2}            ; |28| 
;*----------------------------------------------------------------------------*
;*   SOFTWARE PIPELINE INFORMATION
;*      Disqualified loop: Loop contains a call
;*----------------------------------------------------------------------------*
L1:    
DW$L$_yuv422to420$2$B:
	.dwpsn	"my_convert.c",29,0
           CALL    .S2     B5                ; |30| 
           ADDKPC  .S2     RL0,B3,1          ; |30| 
           EXTU    .S1     A15,16,16,A6      ; |30| 
           MV      .D2X    A12,B4            ; |30| 
           MV      .D1     A13,A4            ; |30| 
RL0:       ; CALL OCCURS                     ; |30| 
DW$L$_yuv422to420$2$E:
;** --------------------------------------------------------------------------*
DW$L$_yuv422to420$3$B:
           MVKL    .S1     _DAT_copy,A3      ; |31| 
           MVKH    .S1     _DAT_copy,A3      ; |31| 
           EXTU    .S1     A15,16,16,A6      ; |31| 
           CALL    .S2X    A3                ; |31| 
           ADDKPC  .S2     RL1,B3,2          ; |31| 
           MV      .D2     B11,B4            ; |31| 
           MV      .D1     A12,A4            ; |31| 
RL1:       ; CALL OCCURS                     ; |31| 
           MVKL    .S2     _DAT_wait,B4      ; |32| 
           MVKH    .S2     _DAT_wait,B4      ; |32| 
           CALL    .S2     B4                ; |32| 
           ADDKPC  .S2     RL2,B3,4          ; |32| 
RL2:       ; CALL OCCURS                     ; |32| 

           ADDK    .S1     720,A13           ; |28| 
||         ADDK    .S2     720,B11           ; |28| 
||         SUB     .L1     A10,1,A10         ; |28| 
||         SUB     .D1     A10,1,A0          ; |28| 

   [ A0]   BNOP    .S1     L1,3              ; |28| 
|| [ A0]   MVKL    .S2     _DAT_copy,B5      ; |30| 

   [!A0]   MV      .D1X    B13,A3
|| [!A0]   MVKL    .S1     _int_mem_temp,A15
|| [ A0]   MVKH    .S2     _DAT_copy,B5      ; |30| 

	.dwpsn	"my_convert.c",33,0
   [!A0]   SHR     .S1     A3,1,A0           ; |35| 
           ; BRANCHCC OCCURS {L1}            ; |28| 
DW$L$_yuv422to420$3$E:
;** --------------------------------------------------------------------------*
;** --------------------------------------------------------------------------*
L2:    
   [!A0]   BNOP    .S1     L4,1              ; |35| 
           MVK     .S1     0x168,A12

           MVKH    .S1     _int_mem_temp,A15
||         MV      .D1     A0,A10            ; |37| 

   [!A0]   MVKL    .S1     _int_mem_temp,A10
||         MV      .D1     A0,A13            ; |35| 
|| [ A0]   MVKL    .S2     _DAT_copy,B5      ; |37| 

   [!A0]   MV      .D1     A13,A0
|| [!A0]   MVKH    .S1     _int_mem_temp,A10
|| [ A0]   MVKH    .S2     _DAT_copy,B5      ; |37| 

           ; BRANCHCC OCCURS {L4}            ; |35| 
;*----------------------------------------------------------------------------*
;*   SOFTWARE PIPELINE INFORMATION
;*      Disqualified loop: Loop contains a call
;*----------------------------------------------------------------------------*
L3:    
DW$L$_yuv422to420$6$B:
	.dwpsn	"my_convert.c",36,0
           CALL    .S2     B5                ; |37| 
           ADDKPC  .S2     RL3,B3,1          ; |37| 
           EXTU    .S1     A12,16,16,A6      ; |37| 
           MV      .D2X    A15,B4            ; |37| 
           MV      .D1     A14,A4            ; |37| 
RL3:       ; CALL OCCURS                     ; |37| 
DW$L$_yuv422to420$6$E:
;** --------------------------------------------------------------------------*
DW$L$_yuv422to420$7$B:
           MVKL    .S1     _DAT_copy,A3      ; |38| 
           MVKH    .S1     _DAT_copy,A3      ; |38| 
           EXTU    .S1     A12,16,16,A6      ; |38| 
           CALL    .S2X    A3                ; |38| 
           ADDKPC  .S2     RL4,B3,2          ; |38| 
           MV      .D2     B12,B4            ; |38| 
           MV      .D1     A15,A4            ; |38| 
RL4:       ; CALL OCCURS                     ; |38| 
           MVKL    .S2     _DAT_wait,B4      ; |39| 
           MVKH    .S2     _DAT_wait,B4      ; |39| 
           CALL    .S2     B4                ; |39| 
           ADDKPC  .S2     RL5,B3,4          ; |39| 
RL5:       ; CALL OCCURS                     ; |39| 

           ADDK    .S1     720,A14           ; |35| 
||         ADDK    .S2     360,B12           ; |35| 
||         SUB     .L1     A10,1,A10         ; |35| 
||         SUB     .D1     A10,1,A0          ; |35| 

   [ A0]   BNOP    .S1     L3,3              ; |35| 
|| [ A0]   MVKL    .S2     _DAT_copy,B5      ; |37| 

   [!A0]   MVKL    .S1     _int_mem_temp,A10
|| [ A0]   MVKH    .S2     _DAT_copy,B5      ; |37| 

	.dwpsn	"my_convert.c",40,0

   [!A0]   MV      .D1     A13,A0
|| [!A0]   MVKH    .S1     _int_mem_temp,A10

           ; BRANCHCC OCCURS {L3}            ; |35| 
DW$L$_yuv422to420$7$E:
;** --------------------------------------------------------------------------*
;** --------------------------------------------------------------------------*
L4:    

   [!A0]   B       .S1     L6                ; |42| 
|| [ A0]   MVKL    .S2     _DAT_copy,B5      ; |44| 

   [ A0]   MVKH    .S2     _DAT_copy,B5      ; |44| 
|| [!A0]   LDW     .D2T2   *+SP(28),B3       ; |50| 
|| [!A0]   MV      .D1X    SP,A31            ; |50| 

           NOP             1
   [!A0]   LDDW    .D1T1   *+A31(16),A13:A12 ; |50| 
   [!A0]   LDDW    .D1T1   *+A31(8),A11:A10  ; |50| 
   [!A0]   LDDW    .D2T2   *+SP(32),B11:B10  ; |50| 
           ; BRANCHCC OCCURS {L6}            ; |42| 
;*----------------------------------------------------------------------------*
;*   SOFTWARE PIPELINE INFORMATION
;*      Disqualified loop: Loop contains a call
;*----------------------------------------------------------------------------*
L5:    
DW$L$_yuv422to420$10$B:
	.dwpsn	"my_convert.c",43,0
           CALL    .S2     B5                ; |44| 
           ADDKPC  .S2     RL6,B3,3          ; |44| 

           MV      .D1     A11,A4            ; |44| 
||         MV      .D2X    A10,B4            ; |44| 
||         EXTU    .S1     A12,16,16,A6      ; |44| 

RL6:       ; CALL OCCURS                     ; |44| 
DW$L$_yuv422to420$10$E:
;** --------------------------------------------------------------------------*
DW$L$_yuv422to420$11$B:
           MVKL    .S1     _DAT_copy,A3      ; |45| 
           MVKH    .S1     _DAT_copy,A3      ; |45| 
           EXTU    .S1     A12,16,16,A6      ; |45| 
           CALL    .S2X    A3                ; |45| 
           ADDKPC  .S2     RL7,B3,2          ; |45| 
           MV      .D2     B10,B4            ; |45| 
           MV      .D1     A10,A4            ; |45| 
RL7:       ; CALL OCCURS                     ; |45| 
           MVKL    .S2     _DAT_wait,B4      ; |46| 
           MVKH    .S2     _DAT_wait,B4      ; |46| 
           CALL    .S2     B4                ; |46| 
           ADDKPC  .S2     RL8,B3,4          ; |46| 
RL8:       ; CALL OCCURS                     ; |46| 

           ADDK    .S1     720,A11           ; |42| 
||         ADDK    .S2     360,B10           ; |42| 
||         SUB     .L1     A13,1,A13         ; |42| 
||         SUB     .D1     A13,1,A0          ; |42| 

   [ A0]   MVKL    .S2     _DAT_copy,B5      ; |44| 
|| [ A0]   B       .S1     L5                ; |42| 

   [!A0]   MV      .D1X    SP,A31            ; |50| 
|| [!A0]   LDW     .D2T2   *+SP(28),B3       ; |50| 
|| [ A0]   MVKH    .S2     _DAT_copy,B5      ; |44| 

           NOP             1
   [!A0]   LDDW    .D1T1   *+A31(16),A13:A12 ; |50| 
   [!A0]   LDDW    .D2T2   *+SP(32),B11:B10  ; |50| 
	.dwpsn	"my_convert.c",47,0
   [!A0]   LDDW    .D1T1   *+A31(8),A11:A10  ; |50| 
           ; BRANCHCC OCCURS {L5}            ; |42| 
DW$L$_yuv422to420$11$E:
;** --------------------------------------------------------------------------*
;** --------------------------------------------------------------------------*
L6:    

           RET     .S2     B3                ; |50| 
||         LDW     .D1T1   *+A31(24),A14     ; |50| 
||         LDDW    .D2T2   *+SP(40),B13:B12  ; |50| 

           LDW     .D2T1   *++SP(48),A15     ; |50| 
	.dwpsn	"my_convert.c",50,1
           NOP             4
           ; BRANCH OCCURS {B3}              ; |50| 

DW$13	.dwtag  DW_TAG_loop

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -