- 注册时间
- 2008-2-6
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 51573
- 在线时间
- 小时
|
楼主 |
发表于 2013-9-10 15:37:00
|
显示全部楼层
-
- DWORD BitX[5];
- void BitRandomInit(DWORD seed)
- {
- DWORD i;
- DWORD s = seed;
- // make random numbers and put them into the buffer
- for (i = 0; i < 5; i++)
- {
- s = s * 29943829 - 1;
- BitX[ i ] = s;
- }
- }
- DWORD BitRandom(void)
- {
- __asm
- {
- mov ecx, 31
- mov eax, 0
- loop1:
- mov ebx, 2111111111
- movd xmm5, ebx
- movd xmm1, dword ptr [BitX + 12] //BitX[3]
- pmuludq xmm5, xmm1
- mov edx, 1492
- movd xmm6, edx
- movd xmm2, dword ptr [BitX + 8] //BitX[2]
- pmuludq xmm6, xmm2
- paddq xmm5, xmm6
- movd dword ptr [BitX + 12], xmm2 //BitX[3]
- mov esi, 1776
- movd xmm7, esi
- movd xmm3, dword ptr [BitX + 4] //BitX[1]
- pmuludq xmm7, xmm3
- paddq xmm5, xmm7
- movd dword ptr [BitX + 8], xmm3 //BitX[2]
- mov edi, 5115
- movd xmm0, edi
- movd xmm4, dword ptr [BitX] //BitX[0]
- pmuludq xmm0, xmm4
- paddq xmm5, xmm0
- movd dword ptr [BitX + 4], xmm4 //BitX[1]
- movd xmm0, dword ptr [BitX + 16] //BitX[4]
- paddq xmm0, xmm5
- movd edx, xmm0
- psrlq xmm0, 32
- movd dword ptr [BitX + 16], xmm0 //BitX[4]
- mov dword ptr [BitX], edx //BitX[0]
- and edx, 1
- shl edx, cl
- add eax, edx
- sub ecx, 1
- jnc loop1
- }
- }
复制代码 这个代码很有价值,重整理下 |
|