无心人 发表于 2008-3-29 20:45:04

B计划之长减法最佳算法讨论

有两个相同长度的双字串left, right, 长度len
现求两个双字串的减法结果result,所谓加法是双字串以低地址做起始表示的长二进制数字的算术加



---------------------------------------------------------------
暂时封闭,此函数极端相似于长加,等找到长加的最佳算法后,直接写最终代码

无心人 发表于 2008-3-31 13:42:34

鉴于并没找到更快的加法
暂时把目前减法贴出来
DWORD longSub4(DWORD * result, DWORD * left, DWORD * right, DWORD len)
{
    __asm
{
mov eax,
mov edx,
mov ebx,
mov ecx,
pxor mm0, mm0
loop1:
movd mm1,
add eax, 4
movd mm2,
psubq mm1, mm2
add edx, 4
paddq mm0, mm1
movd , mm0
psraq mm0, 32
add ebx, 4
sub ecx, 1
jne loop1
movd eax, mm0
emms
}
}
页: [1]
查看完整版本: B计划之长减法最佳算法讨论