Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
tthsqe12 authored Mar 17, 2017
1 parent a8e9cf2 commit 046e884
Show file tree
Hide file tree
Showing 10 changed files with 1,847 additions and 169 deletions.
848 changes: 848 additions & 0 deletions armFish/guts/GenMacros.c

Large diffs are not rendered by default.

26 changes: 26 additions & 0 deletions armFish/guts/Gen_Captures.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
Gen_Captures:
brk 0
/*
; in rbp address of position
; rbx address of state
; io rdi address to write moves
push rsi r12 r13 r14 r15
mov r14, qword[rbp+Pos.typeBB+8*White]
or r14, qword[rbp+Pos.typeBB+8*Black]
cmp byte[rbp+Pos.sideToMove],0
jne Gen_Captures_Black
Gen_Captures_White:
mov r15, qword[rbp+Pos.typeBB+8*Black]
generate_all White, CAPTURES
pop r15 r14 r13 r12 rsi
ret
generate_jmp White, CAPTURES
Gen_Captures_Black:
mov r15, qword[rbp+Pos.typeBB+8*White]
generate_all Black, CAPTURES
pop r15 r14 r13 r12 rsi
ret
generate_jmp Black, CAPTURES
*/
89 changes: 89 additions & 0 deletions armFish/guts/Gen_Evasions.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@

Gen_Evasions:
brk 0
/*
; in rbp address of position
; rbx address of state
; io rdi address to write moves
push rsi r12 r13 r14 r15
mov r13d, dword[rbp+Pos.sideToMove]
; r14 = our king square
mov r14, qword[rbp+Pos.typeBB+8*King]
and r14, qword[rbp+Pos.typeBB+8*r13]
bsf r14, r14
; rsi = their sliding checkers
mov rsi, qword[rbp+Pos.typeBB+8*Pawn]
or rsi, qword[rbp+Pos.typeBB+8*Knight]
andn rsi, rsi, qword[rbx+State.checkersBB]
; r12 = sliderAttacks
mov r9, r14
shl r9, 6+3
xor r12, r12
bsf rdx, rsi
jz .SlidersDone
*/
Gen_Evasions.NextSlider:
/*
blsr rsi, rsi, r8
mov rax, [LineBB+r9+8*rdx]
btr rax, rdx
or r12, rax
bsf rdx, rsi
jnz .NextSlider
*/
Gen_Evasions.SlidersDone:
/*
; generate moves for the king to safe squares
mov rsi, qword[rbp+Pos.typeBB+8*r13]
andn rsi, rsi, qword[KingAttacks+8*r14]
andn r12, r12, rsi
shl r14d, 6
bsf rax, r12
jz .KingMoveDone
*/
Gen_Evasions.NextKingMove:
/*
blsr r12, r12, r8
or eax, r14d
mov dword [rdi], eax
lea rdi, [rdi+sizeof.ExtMove]
bsf rax, r12
jnz .NextKingMove
*/
Gen_Evasions.KingMoveDone:
/*
; if there are multiple checkers, only king moves can be evasions
mov rcx, qword[rbx+State.checkersBB]
blsr rax, rcx
jnz Gen_Evasions_White.Ret
bsf rax, rcx
mov r15, qword[BetweenBB+r9+8*rax]
or r15, rcx
mov r14, qword[rbp+Pos.typeBB+8*White]
or r14, qword[rbp+Pos.typeBB+8*Black]
test r13d,r13d
jnz Gen_Evasions_Black
*/
Gen_Evasions_White:
/*
generate_all White, EVASIONS
*/
Gen_Evasions_White.Ret:
/*
pop r15 r14 r13 r12 rsi
ret
generate_jmp White, EVASIONS
*/
Gen_Evasions_Black:
/*
generate_all Black, EVASIONS
pop r15 r14 r13 r12 rsi
ret
generate_jmp Black, EVASIONS
*/

Loading

0 comments on commit 046e884

Please sign in to comment.