Subversion Repositories Kolibri OS

Rev

Rev 3067 | Rev 5576 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3067 Rev 5575
Line 17... Line 17...
17
    along with this program; if not, write to the Free Software
17
    along with this program; if not, write to the Free Software
18
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
Line 19... Line 19...
19
 
19
 
Line 20... Line -...
20
*******************************************************************************/
-
 
21
 
-
 
22
dword generator;  // random number generator - äëÿ ãåíåðàöèè ñëó÷àéíûõ ÷èñåë
20
*******************************************************************************/
23
 
21
 
24
inline fastcall int random( ECX)
22
inline fastcall int random( ECX)
25
// get pseudo-random number - ïîëó÷èòü ïñåâäîñëó÷àéíîå ÷èñëî
23
// get pseudo-random number - ïîëó÷èòü ïñåâäîñëó÷àéíîå ÷èñëî
Line 26... Line 24...
26
{
24
{
27
  $push ebx
25
  $push ebx
28
 
26
 
Line 29... Line 27...
29
  $rdtsc        // eax & edx
27
  $rdtsc        // eax & edx
30
  $xor eax,edx
28
  $xor eax,edx
31
  $not eax
29
  $not eax
32
 
30
 
33
  EBX = generator;
31
  EBX = __generator;
Line 34... Line 32...
34
  $ror ebx,3
32
  $ror ebx,3
35
  $xor ebx,0xdeadbeef
33
  $xor ebx,0xdeadbeef
Line 36... Line 34...
36
  EBX += EAX;
34
  EBX += EAX;
37
  generator = EBX;
35
  __generator = EBX;
Line 38... Line 36...
38
  
36
  
39
  EAX += EBX;
37
  EAX += EBX;
40
  EAX = EAX % ECX;
38
  EAX = EAX % ECX;
41
  
39
  
42
  $pop ebx  
40
  $pop ebx  
43
}
41
}
44
 
42
 
45
inline fastcall randomize()
43
inline fastcall randomize()
46
// initialize random number generator - èíèöèàëèçèðîâàòü ãåíåðàòîð ñëó÷àéíûõ ÷èñåë
44
// initialize random number __generator - èíèöèàëèçèðîâàòü ãåíåðàòîð ñëó÷àéíûõ ÷èñåë
47
{
45
{
48
  asm
46
  asm
49
  {
47
  {
-
 
48
    mov eax,3