forked from lantonov/asmFish
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
10 changed files
with
1,847 additions
and
169 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
*/ | ||
|
Oops, something went wrong.