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

📄 sad16.asm

📁 BLACKFIN下 16X16宏块运动估计实例
💻 ASM
字号:
/**********************************************

   该函数的功能主要是进行16*16宏块SAD
   运算

**********************************************/
.section L1_code;
.global __sad16;
.align 8;
__sad16:
       [--SP] = (R7:4,P5:3);
       I2 = R0;                //当前宏块地址      cur
       P0 = R1;                //参考帧的开始地址  ref
       R6 = R2;                //stride            stride
       P5 = [SP+40];
       R7 = 16;
       R7 = R6-R7(S);          //stride-16
       M0 = R7;                //stride-16
       R7 = 12;
       R7 = R2-R7(S);
       M1 = R7;
       R7 = P0;                 
       P4 = R7;
       I0 = R0;
       I1 = R7;
       L2 = 0;
       L3 = 0;
       P2 = P4>>2;        
       P4 = P2<<2;             //最低两位置零                
       P3 = 16;                //循环次数
       I3 = P4; 
       R0 = [I2++]||R2 = [I3++];   //开始进行SAD运算
       A1 = A0 = 0||R1 =[I2++]||R3 = [I3++];
        LSETUP(SAD_ST,SAD_END) LC1 = P3;
SAD_ST:
       SAA(R1:0,R3:2)||R0 = [I2++]||R2 = [I3++];
       SAA(R1:0,R3:2)(R)||R1 = [I2++M1]||R3 = [I3++];
       SAA(R1:0,R3:2)||R0 = [I2++]||R2 = [I3++M0];
       SAA(R1:0,R3:2)(R)||R1 = [I2++]||R2 = [I3++];
SAD_END:  R3 = [I3++];        
       R3 =A1.L+A1.H,R2 =A0.L+A0.H;
       R0 = R2+R3;
       [P5] = R0;
                                   //SAD运算结束
      (R7:4,P5:3) = [SP++];
       RTS;                       //函数返回
       NOP; 
__sad16.end:

⌨️ 快捷键说明

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