|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Окт 30, 2004 02:38:59 · Поправил: Asterix Subj Интересует самый короткий вариант. |
|
|
Дата: Окт 30, 2004 05:21:47 · Поправил: SolidCode Это достаточно быстрый и короткий вариант? Многое зависит от того, где эти числа находятся. В данном случае я предполагаю, что они в байтовом массиве. .data num1 db 1 num2 db 2 .code rdtsc and eax,01h add eax,offset num1 movsx eax,byte ptr [eax] поправить здесь можно лишь так: rdtsc xor al,ah and eax,01h movsx eax,byte ptr [eax+offset num1] |
|
|
Дата: Окт 30, 2004 05:28:01 · Поправил: Foamplast; code randomize: Push st Call [GetLocalTime] Mov Eax, [st.wSecond] Shl Eax, 16 Add Eax, [st.wMilliseconds] Mov [seed], Eax Ret rnd: Mov Eax, [seed] Mov Ecx, 69621 Mul Ecx Mov Ecx, 0x7fffffff Div Ecx Mov [seed], Edx Ret choice: Call rnd Mov Edx, [seed] And Edx, 1 Mov Eax, [numbers + Edx] Ret ; bss seed rd 1 numbers: rd 1 rd 2 SYSTEMTIME st Вызываешь один раз randomize, а затем choice сколько влезет. P.S. Можно первые пять команд из randomize заменить на rdtsc, как в варианте выше. Кстати, про вариант выше. Если выбор пероидический, то при определённой частоте выбора случайность будет утеряна (чисто теоретически). |
|
|
Дата: Окт 30, 2004 06:58:04 · Поправил: Asterix Я предполагал передавать числа в ah, al и возвращать там же. Желательно вообще обойтись без операций с памятью. Нужно что-то типа rol ax, cl вот только я торможу как заставить 5 младших бит cl рандомно приходить такими чтоб сдвиг получался кратным 8 |
|
|
Дата: Окт 30, 2004 07:12:02 · Поправил: Black_mirror bh,bl - числа результат выбора в bl rdtsc lea ecx,[eax*8] ror bx,cl |
|
|
Дата: Окт 30, 2004 16:14:50 bh,bl - числа результат выбора в bl rdtsc shr eax,1 jc @f mov bl,bh @@: 9 байт, против 13 у Black_mirror но выполняется медленнее |
|
|
Дата: Окт 31, 2004 05:29:06 Тогда можно 8 байт: dec eax jpe @f |
|
|
Дата: Окт 31, 2004 21:04:05 А если числа в регистрах EBX,EDX, по можно исп rdtsc dec eax cmovpe ebx,edx Результат в EBX, но работает быстрее предыдущих вариантов |
|
|
Дата: Окт 31, 2004 22:44:17 Вобщем рандомизатор что-то получился не очень, вот исходник - может кто хочет поэкспериментировать и предложить лучший. http://cracklab.ru/f/files/1941166798__KeyGen.rar |
|
|
Дата: Ноя 1, 2004 23:38:34 Вот блин, глупость написал, а внимания никто не обратил. rdtsc записывает результат в пару регистров EDX:EAХ. Короче надо использовать пару EBX,ECX в коде. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.062 |