📄 sad16.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 + -