Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Move generation question for the big boys

Author: Bruce Moreland

Date: 14:53:14 09/15/01

Go up one level in this thread


On September 15, 2001 at 16:17:52, Vincent Diepeveen wrote:

>Like if i check for 2 non-array/pointer entities for being zero:
>
>if( a & b )
>  then do this and that;

I don't know what you mean here, but is you probably don't mean to say "&".

>to produce some crap assembly:
>  CMP EAX,0
>  JNZ LOOP
>  CMP EDX,0
>  JNZ LOOP1

This seems to indicate that you meant "&&".

>Now already people will complain: "you don't need special CMP for
>2 different statements". Well they're right.
>
>In fact you don't need 2 compares even. All you need is something
>primitive like:
>
>  ADD EAX,EDX
>  CMP EAX,0
>  JNZ LOOP1

Or perhaps:

    add eax, edx
    jnz loop1

But this isn't the same thing.  If "a" is 1, and "b" is -1, you get a failure
here.  Okay, so let's assume they are unsigned values.  You can still get a zero
value when adding two things if together they add up to exactly 2^32.

The compiler has to care about this, so I don't see how this is the fault of the
compiler.

Perhaps your problem is with the language.  If the language allowed you to
specify a range of values for each data-type, the compiler could catch this.

>However i would need to learn assembly for this or i must rewrite
>my C code. The compiler isn't smart Bruce. The compiler is very stupid
>when talking about source connections. So i have to write:
>  if( a+b )
>    then do this and that;

This is not the same as "a && b", as stated above, but if you can produce the
same code as you can write in assembly, exactly what is the problem?

>>Using pointers will usually help the compiler out, because it can just indirect
>>through a value, rather than having to deal with scaling the value and adding it
>>to a constant.  But in some circumstances, scaling it and adding it to a
>>constant is free.
>
>In general the above construction makes no sense. Optimizing it with a
>pointer is always safer!

Sometimes it doesn't matter.

bruce




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.