· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Сделать рандомайзер в макросах?

Посл.отвђт Сообщенiе


Дата: Сен 18, 2004 13:03:30

Есть идея использовать секунды из переменной @Time, но боюсь
в 1 секунду уложится компиляция всего исходника - как быть?
Или это невозможно?


Дата: Сен 18, 2004 14:41:54 · Поправил: bogrus

Так можно наверное сделать супер-пупер цикл (затормаживать компиляцию) и в нём периодически брать эту переменную , потом можно ещё ксорить с другой такой-же динамически изменяющейся переменной (ещё часы, минуты можно использовать) и повторять так много раз . Если компилиться будет не слишком часто , то должно получаться доволи рандомное значение .

На боард.фасм видел макрос XOR , он может пригодиться .


Дата: Сен 18, 2004 20:53:17

> потом можно ещё ксорить с другой такой-же динамически изменяющейся переменной

Какой? Где ее взять то?

> ещё часы, минуты можно использовать

Не, вот если б можно было миллисекунды заюзать ;-)


Дата: Сен 18, 2004 23:18:48

представляю компиляцию, на пару часов :)

а вообще, конечно, чуть менее удобно, но
можно сделать по типу search&replace,
т.е. написать внешний парсер исходника,
который будет вставлять перед самой компиляцией
рандомные значения...


Дата: Сен 19, 2004 06:37:56

Вот ещё вариант, с использованием FASM.
Каждый вызов макроса random меняет значение __RND__
include 'ext.fi'


__RND__  = 0
__SEED__ = %t

macro   random
{
        __SEED__ = (__SEED__ mod 127773 * 16807) - (__SEED__ / 127773 * 2836)
        __RND__  = __SEED__ mod 0xffffffff ; размерность = DWORD
}


repeat 50
       random
       DISPLAY <__RND__ @HEX  @n
end repeat


Дата: Сен 20, 2004 02:22:15

S_T_A_S_
Хорошая идея, но только мне на выходе желательно получить рандомное число из диапазона 0..20(дес.)


Дата: Сен 20, 2004 06:21:16

Значит нужно исправить макрос:
        __RND__  = __SEED__ mod 21


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.098