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

📄 distancetranformf_l.asm

📁 基于VPM642的距离变换程序
💻 ASM
📖 第 1 页 / 共 3 页
字号:
;******************************************************************************
;* TMS320C6x C/C++ Codegen                                    PC Version 4.32 *
;* Date/Time created: Wed Mar 28 09:33:05 2007                                *
;******************************************************************************

;******************************************************************************
;* 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      : Small                                                *
;*   Calls to RTS      : Near                                                 *
;*   Pipelining        : Enabled                                              *
;*   Speculative Load  : Disabled                                             *
;*   Memory Aliases    : Presume are aliases (pessimistic)                    *
;*   Debug Info        : COFF Debug                                           *
;*                                                                            *
;******************************************************************************

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

	.file	"serial_asm"
* ------------------------------------------------------------------------- *
*             Copyright (c) 2002 Texas Instruments, Incorporated.           *
*                            All Rights Reserved.                           *
* ========================================================================= *

        .text
        .global _DistanceTransformf_L

	.sect	".text"
	.file	"DistanceTranformf_L.sa"
	.sym	_DistanceTransformf_L,_DistanceTransformf_L, 32, 3, 0
	.func	8

;******************************************************************************
;* FUNCTION NAME: _DistanceTransformf_L                                       *
;*                                                                            *
;*   Regs Modified     : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,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,B0,B1,B2,B3,B4,B5, *
;*                           B6,B7,B8,B9,B10,B11,B12,B13,DP,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                              *
;******************************************************************************

;******************************************************************************
;*                                                                            *
;* Using -g (debug) with optimization (-o3) may disable key optimizations!    *
;*                                                                            *
;******************************************************************************
_DistanceTransformf_L:
;** --------------------------------------------------------------------------*
	.line	1
	.sym	A_in1,4, 4, 4, 32
	.sym	A_in2,20, 4, 4, 32
	.sym	A_in3,6, 4, 4, 32
	.sym	A_out,22, 4, 4, 32
	.sym	A_w,8, 4, 4, 32
	.sym	weight1,24, 4, 4, 32
	.sym	weight2,23, 4, 4, 32
	.sym	weight3,26, 4, 4, 32
; _DistanceTransformf_L:  .cproc  A_in1, A_in2, A_in3, A_out, A_w,weight1,weight2,weight3
;             .no_mdep
	.sym	A_add1,3, 4, 4, 32
	.sym	B_add2,58, 4, 4, 32
	.sym	A_add3,47, 4, 4, 32
;             .reg A_add1, B_add2, A_add3
	.sym	mask1,57, 4, 4, 32
	.sym	mask2,46, 4, 4, 32
	.sym	mask3,56, 4, 4, 32
	.sym	mask4,55, 4, 4, 32
;             .reg mask1,mask2,mask3,mask4
	.sym	"A_in1_h:A_in1_l",3, 4, 4, 32
	.sym	A_in1_l,3, 4, 4, 32
	.sym	A_in1_h,3, 4, 4, 32
;             .reg A_in1_h:A_in1_l                ;   |x|x|x|x|x|x|x|x| | |
	.sym	"B_in2_h:B_in2_l",3, 4, 4, 32
	.sym	B_in2_l,3, 4, 4, 32
	.sym	B_in2_h,3, 4, 4, 32
;             .reg B_in2_h:B_in2_l                ;   |x|x|x|x|x|x|x|x| | |
	.sym	"A_in3_h:A_in3_l",3, 4, 4, 32
	.sym	A_in3_l,3, 4, 4, 32
	.sym	A_in3_h,3, 4, 4, 32
;             .reg A_in3_h:A_in3_l                ;   |x|x|x|x|x|x|x|x| | |
	.sym	"A_contr1:A_contr1l",3, 4, 4, 32
	.sym	A_contr1l,3, 4, 4, 32
	.sym	A_contr1,3, 4, 4, 32
	.sym	"A_contr2:A_contr2l",3, 4, 4, 32
	.sym	A_contr2l,3, 4, 4, 32
	.sym	A_contr2,3, 4, 4, 32
;             .reg A_contr1:A_contr1l,A_contr2:A_contr2l
	.sym	"B_contr3:B_contr3l",3, 4, 4, 32
	.sym	B_contr3l,3, 4, 4, 32
	.sym	B_contr3,3, 4, 4, 32
	.sym	"B_contr4:B_contr4l",3, 4, 4, 32
	.sym	B_contr4l,3, 4, 4, 32
	.sym	B_contr4,3, 4, 4, 32
;             .reg B_contr3:B_contr3l,B_contr4:B_contr4l
	.sym	"B_contr5:B_contr5l",3, 4, 4, 32
	.sym	B_contr5l,3, 4, 4, 32
	.sym	B_contr5,3, 4, 4, 32
	.sym	"B_contr6:B_contr6l",3, 4, 4, 32
	.sym	B_contr6l,3, 4, 4, 32
	.sym	B_contr6,3, 4, 4, 32
;             .reg B_contr5:B_contr5l,B_contr6:B_contr6l
	.sym	"B_contr7:B_contr7l",3, 4, 4, 32
	.sym	B_contr7l,3, 4, 4, 32
	.sym	B_contr7,3, 4, 4, 32
	.sym	"A_contr8:A_contr8l",3, 4, 4, 32
	.sym	A_contr8l,3, 4, 4, 32
	.sym	A_contr8,3, 4, 4, 32
;             .reg B_contr7:B_contr7l,A_contr8:A_contr8l
	.sym	"A_contr9:A_contr9l",3, 4, 4, 32
	.sym	A_contr9l,3, 4, 4, 32
	.sym	A_contr9,3, 4, 4, 32
	.sym	"A_contr12:A_contr12l",3, 4, 4, 32
	.sym	A_contr12l,3, 4, 4, 32
	.sym	A_contr12,3, 4, 4, 32
;             .reg A_contr9:A_contr9l,A_contr12:A_contr12l
	.sym	"B_contr34:B_contr34l",3, 4, 4, 32
	.sym	B_contr34l,3, 4, 4, 32
	.sym	B_contr34,3, 4, 4, 32
	.sym	"B_contr56:B_contr56l",3, 4, 4, 32
	.sym	B_contr56l,3, 4, 4, 32
	.sym	B_contr56,3, 4, 4, 32
;             .reg B_contr34:B_contr34l,B_contr56:B_contr56l
	.sym	"A_contr79:A_contr79l",3, 4, 4, 32
	.sym	A_contr79l,3, 4, 4, 32
	.sym	A_contr79,3, 4, 4, 32
	.sym	"A_contr1279:A_contr1279l",3, 4, 4, 32
	.sym	A_contr1279l,3, 4, 4, 32
	.sym	A_contr1279,3, 4, 4, 32
;             .reg A_contr79:A_contr79l,A_contr1279:A_contr1279l
	.sym	"B_contr3456:B_contr3456l",3, 4, 4, 32
	.sym	B_contr3456l,3, 4, 4, 32
	.sym	B_contr3456,3, 4, 4, 32
;             .reg B_contr3456:B_contr3456l 
	.sym	A_result,3, 4, 4, 32
	.sym	"A_result1:A_result1l",3, 4, 4, 32
	.sym	A_result1l,3, 4, 4, 32
	.sym	A_result1,3, 4, 4, 32
;             .reg A_result,A_result1:A_result1l
	.sym	A_temp1,3, 4, 4, 32
	.sym	A_temp2,3, 4, 4, 32
	.sym	A_temp3,3, 4, 4, 32
	.sym	A_temp4,3, 4, 4, 32
	.sym	B_temp1,3, 4, 4, 32
	.sym	B_temp2,21, 4, 4, 32
;             .reg A_temp1,A_temp2,A_temp3,A_temp4,B_temp1,B_temp2
	.sym	A_temp0,3, 4, 4, 32
	.sym	B_temp3,3, 4, 4, 32
	.sym	B_temp4,3, 4, 4, 32
	.sym	A_seed,59, 4, 4, 32
;             .reg A_temp0,B_temp3,B_temp4,A_seed
	.sym	A_cnt,21, 4, 4, 32
;             .reg A_cnt                          ;  Loop counter
	.sym	B_final,16, 4, 4, 32
;             .reg B_final
; loop:       .trip      4
           STW     .D2T2   B13,*SP--(24)     ; |8| 
           STDW    .D2T2   B11:B10,*+SP(16)  ; |8| 
           STW     .D2T2   B12,*+SP(12)      ; |8| 
           STW     .D2T2   B3,*+SP(8)        ; |8| 
           MV      .D2X    A10,B7            ; |8| 
	.line	49
           MVK     .S2     0xff,B20          ; |56| 
	.line	50
           MVKH    .S2     0xff,B20          ; |57| 
	.line	51
           MVK     .S1     0xff00,A25        ; |58| 
	.line	52
           MVKH    .S1     0xff00,A25        ; |59| 
	.line	53
           MVK     .S2     0xff0000,B19      ; |60| 
	.line	54
           MVKH    .S2     0xff0000,B19      ; |61| 
	.line	55
           MVK     .S2     0xff000000,B18    ; |62| 
	.line	56
           MVKH    .S2     0xff000000,B18    ; |63| 
	.line	58
           SHL     .S1X    B10,0x10,A3       ; |65| 
	.line	59
           OR      .D1X    B10,A3,A26        ; |66|  add coefficient weight3
	.line	61
           SHL     .S2     B7,0x10,B5        ; |68| 
	.line	62
           OR      .D2     B7,B5,B21         ; |69|  add coefficient weight2
	.line	64
           SHL     .S1X    B8,0x10,A3        ; |71| 
	.line	65
           OR      .D1X    B8,A3,A3          ; |72|  add coefficient weight1
	.line	67
           LDW     .D1T1   *A6,A5            ; |74| 
           NOP             3
	.line	68
           NOP             1
           AND     .D1     A5,A25,A5         ; |75| 
	.line	69
           NOP             1
           SHRU    .S2X    A5,0x8,B22        ; |76| element 18
	.line	71
	.line	72
           SHRU    .S1     A8,0x2,A5         ; |79| 
	.line	73
           NOP             1
           MV      .D2X    A5,B0             ; |80| 
	.line	74
           ADD     .D2X    0xfffffffe,A5,B5  ; |81|  loop control
	.line	79
           NOP             1

           MVC     .S2     CSR,B13
||         LDNDW   .D1T1   *A4,A23:A22       ; |90| (P) <0,0>  A load, line 1

           MV      .D2     B4,B24
||         AND     .S2     -2,B13,B4

           SUB     .L2     B5,1,B23
||         MVC     .S2     B4,CSR            ; interrupts off
||         LDNDW   .D2T2   *B24,B5:B4        ; |89| (P) <0,1>  A load, line 2

           MV      .D1     A6,A28
           ZERO    .L1     A19:A18           ; |97| (P) <0,12> 
           AND     .S1X    A23,B20,A5        ; |115| (P) <0,5> 

           AND     .L1     A25,A22,A5        ; |103| (P) <0,6> 
||         SHL     .S1     A5,0x10,A24       ; |116| (P) <0,6> 
||         AND     .D1X    A22,B18,A6        ; |110| (P) <0,7> 

           AND     .D2     B5,B20,B29        ; |157| (P) <0,7> 
||         AND     .D1X    B4,A25,A8         ; |137| (P) <0,6> 
||         SHRU    .S1     A5,0x8,A7         ; |104| (P) <0,7> 

           LDNDW   .D1T1   *A28,A21:A20      ; |88| (P) <0,5>  A load, line 3
||         AND     .L1X    A22,B19,A2        ; |107| (P) <0,8> 
||         AND     .D2     B4,B19,B11        ; |143| (P) <0,10> 
||         SHRU    .S1     A8,0x8,A5         ; |138| (P) <0,8> 

           AND     .D2X    B5,A25,B7         ; |164| (P) <0,6> 
||         OR      .D1X    B29,A19,A19       ; |159| (P) <0,22> 
||         SHL     .S1     A5,0x10,A30       ; |140| (P) <0,13> 

           ZERO    .L1     A17:A16           ; |94| (P) <0,8> 
||         MV      .D2     B6,B25
||         AND     .L2     B4,B18,B8         ; |149| (P) <0,6> 
||         SHRU    .S2     B7,0x8,B26        ; |165| (P) <0,7> 
||         SHRU    .S1X    B11,0x10,A0       ; |145| (P) <0,12> 

           ZERO    .L2     B17:B16           ; |96| (P) <0,5> 
||         SHRU    .S2     B8,0x8,B28        ; |150| (P) <0,8> 
||         ZERO    .L1     A9:A8             ; |95| (P) <0,9> 
||         AND     .D2     B4,B20,B8         ; |134| (P) <0,9> 
||         SHL     .S1X    B29,0x10,A22      ; |160| (P) <0,10> 

           ADD     .D1     4,A4,A27          ; |90| (P) <0,20> 
||         ZERO    .L2     B7:B6             ; |98| (P) <0,4> 
||         ZERO    .L1     A5:A4             ; |93| (P) <0,7> 
||         SHRU    .S2     B28,0x10,B30      ; |153| (P) <0,10> 
||         SHL     .S1X    B26,0x10,A29      ; |167| (P) <0,9> 
||         OR      .D2X    A5,B16,B16        ; |139| (P) <0,12> 

           AND     .D2X    A20,B18,B4        ; |202| (P) <0,10> 
||         OR      .D1     A7,A4,A4          ; |105| (P) <0,9> 
||         OR      .S2     B30,B6,B6         ; |155| (P) <0,12> 
||         OR      .S1     A0,A18,A18        ; |147| (P) <0,13> 
||         OR      .L1X    B8,A8,A8          ; |135| (P) <0,11> 

⌨️ 快捷键说明

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