mirror of
https://github.com/stasenso/SHA256.git
synced 2026-06-26 21:32:43 +03:00
Первый проход цикла смешивания готов!
This commit is contained in:
+45
-6
@@ -2203,12 +2203,12 @@ Wt Endp
|
||||
CompCycle proc; Цикл сжатия. Вынес в отдельную процедуру
|
||||
; на входе: R12-R15 текущий хэш
|
||||
; XMM0 - XMM15 - Wt
|
||||
;i=0
|
||||
;Инициирую значениа 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
|
||||
rol r12,32 ;B=A
|
||||
shl r13,32 ;D=C
|
||||
rol r14,32 ;F=E
|
||||
@@ -2225,7 +2225,8 @@ CompCycle proc; Цикл сжатия. Вынес в отдельную проц
|
||||
mov eax,r8d ;eax=A
|
||||
mov rbx,r8
|
||||
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 ebx,ecx ;B and C
|
||||
mov edx,r8d ;edx=A
|
||||
@@ -2233,10 +2234,48 @@ CompCycle proc; Цикл сжатия. Вынес в отдельную проц
|
||||
or eax,ebx ;(A and B) or (B and C)
|
||||
or edx,eax ;(A and C) or ((A and B) or (B and C))
|
||||
;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
|
||||
CompCycle Endp
|
||||
end
|
||||
BIN
Binary file not shown.
Binary file not shown.
+9
-8
@@ -1,14 +1,15 @@
|
||||
RAX 64(double) 00000000 00000000 8 байт
|
||||
RBX 64(double) 00000000 00000000 8 байт
|
||||
RCX 64(double) 00000000 00000000 8 байт
|
||||
RDX 64(double) 00000000 00000000 8 байт
|
||||
R8 64(double) 00000000 00000000 8 байт - A,B (Занят только во время цикла)
|
||||
R9 64(double) 00000000 00000000 8 байт - C,D (Занят только во время цикла)
|
||||
R10 64(double) 00000000 00000000 8 байт - E,F (Занят только во время цикла)
|
||||
R11 64(double) 00000000 00000000 8 байт - G,H (Занят только во время цикла)
|
||||
R12 64(double) 00000000 00000000 8 байт - H1,H2
|
||||
R13 64(double) 00000000 00000000 8 байт - H3,H4
|
||||
R14 64(double) 00000000 00000000 8 байт - H5,H6
|
||||
R15 64(double) 00000000 00000000 8 байт - H7,H8
|
||||
R8 64(double) 00000000 00000000 8 байт - B,A (Занят только во время цикла)
|
||||
R9 64(double) 00000000 00000000 8 байт - D,C (Занят только во время цикла)
|
||||
R10 64(double) 00000000 00000000 8 байт - F,E (Занят только во время цикла)
|
||||
R11 64(double) 00000000 00000000 8 байт - H,G (Занят только во время цикла)
|
||||
R12 64(double) 00000000 00000000 8 байт - H2,H1
|
||||
R13 64(double) 00000000 00000000 8 байт - H4,H3
|
||||
R14 64(double) 00000000 00000000 8 байт - H6,H5
|
||||
R15 64(double) 00000000 00000000 8 байт - H8,H7
|
||||
XMM0 128 00000000 00000000 00000000 00000000 16 байт - W3,W2,W1,W0
|
||||
XMM1 128 00000000 00000000 00000000 00000000 16 байт - W7,W6,W5,W4
|
||||
XMM2 128 00000000 00000000 00000000 00000000 16 байт - W11,W10,W9,W8
|
||||
|
||||
Reference in New Issue
Block a user