From: Marco Costalba Date: Mon, 30 Mar 2009 07:29:02 +0000 (+0100) Subject: Document TTEntry and move layouts X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=c6c4713ab2fb19e542b13df3b48bd14313bc5ad7;ds=inline Document TTEntry and move layouts No functional change. Signed-off-by: Marco Costalba --- diff --git a/src/move.h b/src/move.h index 56659cd9..e9f72426 100644 --- a/src/move.h +++ b/src/move.h @@ -38,10 +38,22 @@ class Position; +/// A move needs 17 bits to be stored +/// +/// bit 0- 5: destination square (from 0 to 63) +/// bit 6-11: origin square (from 0 to 63) +/// bit 12-14: promotion piece type +/// bit 15: en passant flag +/// bit 16: castle flag +/// +/// Special cases are MOVE_NONE and MOVE_NULL. We can sneak these in +/// because in any normal move destination square is always different +/// from origin square while MOVE_NONE and MOVE_NULL have the same +/// origin and destination square, 0 and 1 respectively. + enum Move { MOVE_NONE = 0, - MOVE_NULL = 65, - MOVE_MAX = 0xFFFFFF + MOVE_NULL = 65 }; @@ -56,11 +68,11 @@ struct MoveStack { //// inline Square move_from(Move m) { - return Square((int(m) >> 6) & 077); + return Square((int(m) >> 6) & 0x3F); } inline Square move_to(Move m) { - return Square(m & 077); + return Square(m & 0x3F); } inline PieceType move_promotion(Move m) { diff --git a/src/tt.h b/src/tt.h index 31fc1fbc..76ecad81 100644 --- a/src/tt.h +++ b/src/tt.h @@ -34,7 +34,21 @@ //// Types //// -/// The TTEntry class is the class of transposition table entries. +/// The TTEntry class is the class of transposition table entries +/// +/// A TTEntry needs 128 bits to be stored +/// +/// bit 0-63: key +/// bit 64-95: data +/// bit 96-111: value +/// bit 112-127: depth +/// +/// the 32 bits of the data field are so defined +/// +/// bit 0-16: move +/// bit 17-19: not used +/// bit 20-22: value type +/// bit 23-31: generation class TTEntry {