add constants

This commit is contained in:
Dmitry Vagner 2022-08-23 16:40:31 -07:00
parent 03b4d0a9da
commit ca23001029
2 changed files with 139 additions and 11 deletions

View File

@ -0,0 +1,126 @@
// %macro load_K
K_data:
// Left
BYTES 0x00, 0x00, 0x00, 0x00
BYTES 0x5A, 0x82, 0x79, 0x99
BYTES 0x6E, 0xD9, 0xEB, 0xA1
BYTES 0x8F, 0x1B, 0xBC, 0xDC
BYTES 0xA9, 0x53, 0xFD, 0x4E
// Right
BYTES 0x50, 0xA2, 0x8B, 0xE6
BYTES 0x5C, 0x4D, 0xD1, 0x24
BYTES 0x6D, 0x70, 0x3E, 0xF3
BYTES 0x7A, 0x6D, 0x76, 0xE9
BYTES 0x00, 0x00, 0x00, 0x00
// %macro load_s
s_data:
// Left Round 1
BYTES 11, 14, 15, 12
BYTES 05, 08, 07, 09
BYTES 11, 13, 14, 15
BYTES 06, 07, 09, 08
// Left Round 2
BYTES 07, 06, 08, 13
BYTES 11, 09, 07, 15
BYTES 07, 12, 15, 09
BYTES 11, 07, 13, 12
// Left Round 3
BYTES 11, 13, 06, 07
BYTES 14, 09, 13, 15
BYTES 14, 08, 13, 06
BYTES 05, 12, 07, 05
// Left Round 4
BYTES 11, 12, 14, 15
BYTES 14, 15, 09, 08
BYTES 09, 14, 05, 06
BYTES 08, 06, 05, 12
// Left Round 5
BYTES 09, 15, 05, 11
BYTES 06, 08, 13, 12
BYTES 05, 12, 13, 14
BYTES 11, 08, 05, 06
// Right Round 1
BYTES 08, 09, 09, 11
BYTES 13, 15, 15, 05
BYTES 07, 07, 08, 11
BYTES 14, 14, 12, 06
// Right Round 2
BYTES 09, 13, 15, 07
BYTES 12, 08, 09, 11
BYTES 07, 07, 12, 07
BYTES 06, 15, 13, 11
// Right Round 3
BYTES 09, 07, 15, 11
BYTES 08, 06, 06, 14
BYTES 12, 13, 05, 14
BYTES 13, 13, 07, 05
// Right Round 4
BYTES 15, 05, 08, 11
BYTES 14, 14, 06, 14
BYTES 06, 09, 12, 09
BYTES 12, 05, 15, 08
// Right Round 5
BYTES 08, 05, 12, 09
BYTES 12, 05, 14, 06
BYTES 08, 13, 06, 05
BYTES 15, 13, 11, 11
// %macro load_r
r_data:
// Left Round 0
BYTES 00, 01, 02, 03
BYTES 04, 05, 06, 07
BYTES 08, 09, 10, 11
BYTES 12, 13, 14, 15
// Left Round 1
BYTES 07, 04, 13, 01
BYTES 10, 06, 15, 03
BYTES 12, 00, 09, 05
BYTES 02, 14, 11, 08
// Left Round 2
BYTES 03, 10, 14, 04
BYTES 09, 15, 08, 01
BYTES 02, 07, 00, 06
BYTES 13, 11, 05, 12
// Left Round 3
BYTES 01, 09, 11, 10
BYTES 00, 08, 12, 04
BYTES 13, 03, 07, 15
BYTES 14, 05, 06, 02
// Left Round 4
BYTES 04, 00, 05, 09
BYTES 07, 12, 02, 10
BYTES 14, 01, 03, 08
BYTES 11, 06, 15, 13
// Right Round 0
BYTES 05, 14, 07, 00
BYTES 09, 02, 11, 04
BYTES 13, 06, 15, 08
BYTES 01, 10, 03, 12
// Right Round 1
BYTES 06, 11, 03, 07
BYTES 00, 13, 05, 10
BYTES 14, 15, 08, 12
BYTES 04, 09, 01, 02
// Right Round 2
BYTES 15, 05, 01, 03
BYTES 07, 14, 06, 09
BYTES 11, 08, 12, 02
BYTES 10, 00, 04, 13
// Right Round 3
BYTES 08, 06, 04, 01
BYTES 03, 11, 15, 00
BYTES 05, 12, 02, 13
BYTES 09, 07, 10, 14
// Right Round 4
BYTES 12, 15, 10, 04
BYTES 01, 05, 08, 07
BYTES 06, 02, 13, 14
BYTES 00, 03, 09, 11

View File

@ -42,30 +42,31 @@ switch:
loop:
jumpdest
// stack: *stack, Fj, Kj, 16, n, retdest
// stack: *state, Fj, Kj, 16, n, retdest
push 1 dup9 sub swap8
// stack: n, *stack, Fj, Kj, 16, n-1, retdest
// stack: n, *state, Fj, Kj, 16, n-1, retdest
%jumpi(cycle)
// stack: *stack, Fj, Kj, 16, -1, retdest
// stack: *state, Fj, Kj, 16, -1, retdest
%stack (a, b, c, d, e, f, k, i, n, ret) -> (ret, a, b, c, d, e)
// stack: retdest, *stack
// stack: retdest, *state
jump
cycle:
jumpdest
// stack: *stack, Fj, Kj, i, n, retdest
// stack: *state, Fj, Kj, i, n, retdest
push 1 dup9 sub swap8
// stack: i, *stack, Fj, Kj, i-1, n, retdest
// stack: i, *state, Fj, Kj, i-1, n, retdest
%jumpi(R)
// stack: *stack, Fj, Kj, -1, n, retdest
// stack: *state, Fj, Kj, -1, n, retdest
swap5 pop push Fj swap5 ---------------------------------------------------------------------TODO
// stack: *stack, Fj, Kj 16, n, retdest
// stack: *state, Fj, Kj 16, n, retdest
swap6 pop push Kj swap6 ---------------------------------------------------------------------TODO
// stack: *stack, Fj, Kj 16, n, retdest
// stack: *state, Fj, Kj 16, n, retdest
swap7 pop push 16 swap7
// stack: *stack, Fj, Kj 16, n, retdest
// stack: *state, Fj, Kj 16, n, retdest
%jump(loop)
/// Note that a, b, c, d, e represent *state
///
/// def R(a, b, c, d, e, Fj, Kj, _sj, _rj, _X):
/// a = u32(ROL(sj, u32(Fj(b, c, d) + a + X[rj] + Kj)) + e)
/// c = ROL(10, c)
@ -164,3 +165,4 @@ mix:
// stack: s3+l4+r0, s1+l2+r3, s2+l3+r4, retdest, s4+l0+r1, s0+l1+r2
swap3
// stack: retdest, s1+l2+r3, s2+l3+r4, s3+l4+r0, s4+l0+r1, s0+l1+r2
jump