- 注册时间
- 2008-2-6
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 51573
- 在线时间
- 小时
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?欢迎注册
×
对这个专题
有些生疏了
先贴上很早以前的代码- //移位 假设es = ds
- //左移 pL << s = pA (s < 32)
- void AsmShl(unsigned long * pL, unsigned long * pA, unsigned long t, unsigned long s)
- {
- if (t == 0)
- return;
- asm {
- push ds
- mov ebx, t
- mov ecx, s
- lea esi, dword ptr pL
- lea edi, dword ptr pA
- mov edx, 0
- cld
- }
- AsmShl1:
- asm {
- lodsd
- push eax
- shld eax, edx, cl
- pop edx
- stosd
- dec ebx
- jnz AsmShl1
- mov bl, 32
- sub bl, cl
- mov cl, bl
- shr edx, cl
- mov [edi], edx
- pop ds
- }
- }
-
- //右移 pL >> s = pA (s < 32)
- void AsmShr(unsigned long * pL, unsigned long * pA, unsigned long t, unsigned long s)
- {
- if (t == 0)
- return;
- asm {
- push ds
- mov ebx, t
- mov ecx, s
- lea esi, dword ptr pL
- lea edi, dword ptr pA
- mov edx, [esi]
- add esi, 4
- dec ebx
- jz AsmShr2
- cld
- }
- AsmShr1:
- asm {
- lodsd
- shrd edx, eax, cl
- xchg edx, eax
- stosd
- dec ebx
- jnz AsmShr1
- }
- AsmShr2:
- asm {
- shr edx, cl
- mov [edi], edx
- pop ds
- }
- }
-
-
复制代码 然后考虑做出优化的代码来
可以用MMX/SSE/SSE2等指令 |
|