Author: Frederik Tack
Date: 08:57:21 12/23/05
Go up one level in this thread
On December 23, 2005 at 10:49:00, Gerd Isenberg wrote: >>About the assembler routine being slower : >>I found that using a call by reference instead of a call by value speeds up the >>function in Delphi a great deal because you get the adress of the bitboard >>directly in the EAX register, don't know about C though but perhaps it will be >>the same or perhaps its just a thing of the Delphi compiler. > > >Yes, but even if the pointer is passed via a register (fastcall calling >convention in C is via ECX or EDX in 32-bit mode) your bitboard has to be in >memory - even if it is already in a register pair. > >Does Delfi inline short functions? Or is it allways a function call? > > >>I also try to optimize performance by doing the first bitscan on the side of the >>board where the bit is most likely to occur. For example if i have to find the >>white king, the piece is most likely to be found on the white side of the board. >>That way BSF/BSR is executed only once in most cases. >> >>Here's the code >> >>function BitScanForwardBlack(var Bitboard: TBitboard): TSquare; >>// Returns the first occupied square of a bitboard, >>// scanning forward and starting with the black side of the board >>asm >> bsf eax, [eax] >> jnz @End >> bsf eax, [eax+4] >> jz @End >> add eax, 32 >> @End: >>end; >> >> >>function BitScanReverseWhite(var Bitboard: TBitboard): TSquare; >>// Returns the first occupied square of a bitboard, >>// scanning backward and starting with the white side of the board >>asm >> bsr eax, [eax+4] >> jz @Black >> add eax, 32 >> jmp @End >> @Black: >> bsr eax, [eax] >> @End: >>end; >> >> >>Fred > >I see - but if i like to introduce color dependent routines for bitboard >traversal, i would make them rank-symmetric but not file-symmetric - so that >black-white mirrored (including side to move changed) positions are exactly >searched in the same manner as the original position. That's exactly what these functions do, they are rank-symmetric. Fred
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.