Author: Tony Werten
Date: 01:31:48 04/19/00
Go up one level in this thread
On April 19, 2000 at 03:27:16, Dan Newman wrote: >On April 18, 2000 at 22:44:25, Flemming Rodler wrote: > >>Hi, >> >>I am trying to implement a bitboard based chess program on a Pentium or AMD >>computer. I need to be able to find the following information fast: >> >>1) The position of the first and/or last bit in a sequence of 64 bits. >>2) Count the number of bits that are 1 in a sequence of 64 bits. >> >>I know there is a method that works linear in the number of on-bits for >>problem 2: >> >> for(count = 0; bitboard; count++, bitboard &= (bitboard -1)); >> >> >>Is there anything faster, ie. such lookuptables or machine code intrutions? >> >>What about problem 1? >> >>Thanks in advance for any reply >>Flemming > > >The following is what I use in my program to find bit indices >(it works only with MSVC). > >#pragma warning( push) >#pragma warning( disable: 4035) >inline int bsf( unsigned long bitpat) >{ > __asm mov eax, bitpat Just a small question. Can you leave this mov away ? Since bitpat will be passed in the eax register anyway ? Or doesn't this work for inline functions ? ( I'm a delphi man, and delphi doesn't support inline ) Tony > __asm bsf eax, eax >} >inline int bsr( unsigned long bitpat) >{ > __asm mov eax, bitpat > __asm bsr eax, eax >} >#pragma warning( pop) > > >-Dan.
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.