Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Here is some test data

Author: Dieter Buerssner

Date: 12:27:45 09/04/03

Go up one level in this thread


On September 04, 2003 at 15:08:37, Dezhi Zhao wrote:

>__declspec(naked) void __fastcall update_key_non_capture_asm(int move)
>{
>	__asm
>	{
>		movzx	eax, cl				// from

Does the __fastcall guarantee, that move is in ecx?

>		movzx	edx, ch				// to
>		shr ecx, 10				// type * 64

You change ecx. Does the compiler note this? Or will the caller see move
magically changed (like a call by reference)?
>__int64 rand64()
>{
>	union
>	{
>		__int64 q;
>		struct
>		{
>			int low;
>			int high;
>		};
>	} r;
>
>	r.low = rand() | (rand() << 16);

This will make the code somewhat unreproducable. The order in which the 2
rand() are called is not specified, and can depend on the compiler or even on
options to the compiler. Also, many libraries only have only 15 bit rand(), so
it will leave 4 bits unset always. For libraries, that use more than 16 bits for
rand, it will produce suboptimal values, with more set than unset bits. Using
xor instead of or would get rid of that problem. For a practical chess engine,
and especially with portability (which of course somehow contradicts the whole
sense of your test) and reproducability in mind, it would probably be best to
use some (small) random number generator in source code.

I would use unsigned values.

Sure, that all is no problem for this speed test.

Regards,
Dieter



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.