64,643
社区成员
发帖
与我相关
我的任务
分享
int CalculateDotProduct_c(const short * pA, const short * pB, int nOrder)
{
int nDotProduct = 0;
while (nOrder--)
{
nDotProduct += *pA++ * *pB++;
}
return nDotProduct;
}
mov eax, DWORD PTR [ebp+8] ;载入pA
movzx eax, WORD PTR [eax] ;载入*pA
movsx edx, ax ;*pA作符号扩展
mov eax, DWORD PTR [ebp+12] ;载入pB
movzx eax, WORD PTR [eax] ;载入*pB
cwde ;继续扩展
imul eax, edx ;明显是 32bit 乘法
add DWORD PTR [ebp-4], eax ;直接加 32bit 结果到 nDotProduct