Первый проход цикла смешивания готов!

This commit is contained in:
Стас Михайлов WindowsDesktop
2021-08-20 14:52:18 +03:00
parent fa75eebfdd
commit 626e82c0f6
4 changed files with 71 additions and 31 deletions
+61 -22
View File
@@ -2203,29 +2203,30 @@ Wt Endp
CompCycle proc; Цикл сжатия. Вынес в отдельную процедуру CompCycle proc; Цикл сжатия. Вынес в отдельную процедуру
; на входе: R12-R15 текущий хэш ; на входе: R12-R15 текущий хэш
; XMM0 - XMM15 - Wt ; XMM0 - XMM15 - Wt
;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)
mov r8,r12
mov r9,r13
mov r10,r14
mov r11,r15
;i=0 ;i=0
rol r12,32 ;B=A ;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11)
shl r13,32 ;D=C mov r8,r12
rol r14,32 ;F=E mov r9,r13
shl r15,32 ;H=G mov r10,r14
mov eax,r12d mov r11,r15
or r13,rax ;C=B rol r12,32 ;B=A
mov eax,r14d shl r13,32 ;D=C
or r15,rax ;G=F rol r14,32 ;F=E
mov rax,0ffffffffh shl r15,32 ;H=G
shl rax,32 mov eax,r12d
and r12,rax ;A=null or r13,rax ;C=B
and r14,rax ;E=null mov eax,r14d
or r15,rax ;G=F
mov rax,0ffffffffh
shl rax,32
and r12,rax ;A=null
and r14,rax ;E=null
;Ma ;Ma
mov eax,r8d ;eax=A mov eax,r8d ;eax=A
mov rbx,r8 mov rbx,r8
shr rbx,32 ;ebx=B shr rbx,32 ;ebx=B
mov ecx,r9d ;ecx=C mov rcx,r13
shr rcx,32 ;ecx=C
and eax,ebx ;A and B and eax,ebx ;A and B
and ebx,ecx ;B and C and ebx,ecx ;B and C
mov edx,r8d ;edx=A mov edx,r8d ;edx=A
@@ -2233,10 +2234,48 @@ CompCycle proc; Цикл сжатия. Вынес в отдельную проц
or eax,ebx ;(A and B) or (B and C) or eax,ebx ;(A and B) or (B and C)
or edx,eax ;(A and C) or ((A and B) or (B and C)) or edx,eax ;(A and C) or ((A and B) or (B and C))
;edx=Ma ;edx=Ma
;Ch
mov eax,r10d;eax=E
and eax,r15d;eax=p1=(E and F)
mov ebx,r10d;ebx=E
xor ebx,0ffffffffh ;ebx=p2=(E xor 0ffffffffh)
mov rcx,r15
shr rcx,32 ;ecx=G
and ecx,ebx ;ecx=p3=(p2 and G)
or ecx,eax
;ecx=Ch
;Σо
ror r8d,2 ;a rightrotate 2
mov eax,r8d
ror r8d,11 ;a rightrotate 13:
xor eax,r8d
ror r8d,9 ;a rightrotate 22:
xor r8d,eax
;r8d=Σо
;Σ1
ror r10d,6 ;a rightrotate 6
mov eax,r10d
ror r10d,5 ;a rightrotate 11:
xor eax,r10d
ror r10d,14 ;a rightrotate 22:
xor r10d,eax
;r10d=Σ1
;T1
mov eax,k_konst
pshufd XMM0,XMM0,00111001b
movd ebx,XMM0
bswap ebx
add eax,ebx ;Wt+kn
add eax,ecx ;Wt+kn+Ch
add eax,r10d ;Wt+kn+Ch+Σ1
shr r11,32 ;r11d=H
add r11d,eax ;Wt+kn+Ch+Σ1+h
shr r9,32 ;r9d=D
add r9d,r11d ;D+T1
or r14,r9 ;E=D+T1
add r11d,r8d ;T1+Σо
add r11d,edx ;T1+Σо+Ma
or r12,r11 ;A=T1+T2
ret ret
CompCycle Endp CompCycle Endp
end end
BIN
View File
Binary file not shown.
Binary file not shown.
+10 -9
View File
@@ -1,14 +1,15 @@
RAX 64(double) 00000000 00000000 8 байт RAX 64(double) 00000000 00000000 8 байт
RBX 64(double) 00000000 00000000 8 байт
RCX 64(double) 00000000 00000000 8 байт RCX 64(double) 00000000 00000000 8 байт
RDX 64(double) 00000000 00000000 8 байт RDX 64(double) 00000000 00000000 8 байт
R8 64(double) 00000000 00000000 8 байт - A,B (Занят только во время цикла) R8 64(double) 00000000 00000000 8 байт - B,A (Занят только во время цикла)
R9 64(double) 00000000 00000000 8 байт - C,D (Занят только во время цикла) R9 64(double) 00000000 00000000 8 байт - D,C (Занят только во время цикла)
R10 64(double) 00000000 00000000 8 байт - E,F (Занят только во время цикла) R10 64(double) 00000000 00000000 8 байт - F,E (Занят только во время цикла)
R11 64(double) 00000000 00000000 8 байт - G,H (Занят только во время цикла) R11 64(double) 00000000 00000000 8 байт - H,G (Занят только во время цикла)
R12 64(double) 00000000 00000000 8 байт - H1,H2 R12 64(double) 00000000 00000000 8 байт - H2,H1
R13 64(double) 00000000 00000000 8 байт - H3,H4 R13 64(double) 00000000 00000000 8 байт - H4,H3
R14 64(double) 00000000 00000000 8 байт - H5,H6 R14 64(double) 00000000 00000000 8 байт - H6,H5
R15 64(double) 00000000 00000000 8 байт - H7,H8 R15 64(double) 00000000 00000000 8 байт - H8,H7
XMM0 128 00000000 00000000 00000000 00000000 16 байт - W3,W2,W1,W0 XMM0 128 00000000 00000000 00000000 00000000 16 байт - W3,W2,W1,W0
XMM1 128 00000000 00000000 00000000 00000000 16 байт - W7,W6,W5,W4 XMM1 128 00000000 00000000 00000000 00000000 16 байт - W7,W6,W5,W4
XMM2 128 00000000 00000000 00000000 00000000 16 байт - W11,W10,W9,W8 XMM2 128 00000000 00000000 00000000 00000000 16 байт - W11,W10,W9,W8