Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: 0x88 findings

Author: h.g.muller

Date: 09:47:37 02/23/06

Go up one level in this thread


Well, at the moment you still are, because this is only at the stage of an idea,
and it will take some development to get in the pawn double move, e.p. capture
and castling...

Unfortunately the compiler I am using (gcc under cygwin) does not seem to know
CMOV. Even if I write something simple as

    if(a==50)b=c;

it generates branches over a single ordinary MOV instruction:

    cmpl $50, %eax
    jne  L1
    movl %ecx, %ebx
L1:

Very inconvenient, but it is not that difficult to replace such jumps by hand in
the generated assembler file, to make

    cmpl    $50, %eax
    cmovel  %ecx, %ebx

Perhaps a newer version of gcc can do this, I will have a look. If not, I can
write an extra compiler 'pass' that does this automatically: process the
assembler source to look for any conditional branch jxx over a single movl
instruction, and then delete the line with the branch and replace the movl by
cmovxxl. The assembler seems to understand this all right.



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.