static av_always_inline av_const int MULL(int a, int b, unsigned shift)
{
int rt;
//__asm__ (
// "imull %3 \n\t"
// "shrdl %4, %%edx, %%eax \n\t"
// :"=a"(rt), "=d"(dummy)
// :"a"(a), "rm"(b), "ci"((uint8_t)shift)
//);
__asm__{
mov eax, a
imul b
mov ecx, shift
shrd eax,edx,cl
mov rt, eax
}
return rt;
}
{
int rt;
//__asm__ (
// "imull %3 \n\t"
// "shrdl %4, %%edx, %%eax \n\t"
// :"=a"(rt), "=d"(dummy)
// :"a"(a), "rm"(b), "ci"((uint8_t)shift)
//);
__asm__{
mov eax, a
imul b
mov ecx, shift
shrd eax,edx,cl
mov rt, eax
}
return rt;
}
本文介绍了一种使用内联汇编来实现带有移位操作的乘法函数的方法。通过具体的汇编指令,该函数可以高效地完成整数乘法,并将结果按指定位数进行右移。

1038

被折叠的 条评论
为什么被折叠?



