examples/sha1: use comments (#41)

This commit is contained in:
Michael McLoughlin
2019-01-11 10:52:09 -08:00
parent 94033059eb
commit d0357fa6f9
2 changed files with 1283 additions and 1114 deletions

View File

@@ -18,13 +18,13 @@ func main() {
w := AllocLocal(64)
W := func(r int) Mem { return w.Offset((r % 16) * 4) }
// Load initial hash.
Comment("Load initial hash.")
hash := [5]Register{GP32(), GP32(), GP32(), GP32(), GP32()}
for i, r := range hash {
MOVL(h.Offset(4*i), r)
}
// Initialize registers.
Comment("Initialize registers.")
a, b, c, d, e := GP32(), GP32(), GP32(), GP32(), GP32()
for i, r := range []Register{a, b, c, d, e} {
MOVL(hash[i], r)
@@ -42,6 +42,7 @@ func main() {
}
for r := 0; r < 80; r++ {
Commentf("Round %d.", r)
q := quarter[r/20]
// Load message value.
@@ -72,12 +73,12 @@ func main() {
a, b, c, d, e = t, a, b, c, d
}
// Final add.
Comment("Final add.")
for i, r := range []Register{a, b, c, d, e} {
ADDL(r, hash[i])
}
// Store results back.
Comment("Store results back.")
for i, r := range hash {
MOVL(r, h.Offset(4*i))
}

View File

@@ -4,16 +4,22 @@
TEXT ·block(SB), $64-32
MOVQ h(FP), AX
MOVQ m_base+8(FP), CX
// Load initial hash.
MOVL (AX), DX
MOVL 4(AX), BX
MOVL 8(AX), BP
MOVL 12(AX), SI
MOVL 16(AX), DI
// Initialize registers.
MOVL DX, R8
MOVL BX, R9
MOVL BP, R10
MOVL SI, R11
MOVL DI, R12
// Round 0.
MOVL (CX), R13
BSWAPL R13
MOVL R13, (SP)
@@ -28,6 +34,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R14
ADDL R13, R14
ROLL $0x1e, R9
// Round 1.
MOVL 4(CX), R12
BSWAPL R12
MOVL R12, 4(SP)
@@ -42,6 +50,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R13
ADDL R12, R13
ROLL $0x1e, R8
// Round 2.
MOVL 8(CX), R11
BSWAPL R11
MOVL R11, 8(SP)
@@ -56,6 +66,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R12
ADDL R11, R12
ROLL $0x1e, R14
// Round 3.
MOVL 12(CX), R10
BSWAPL R10
MOVL R10, 12(SP)
@@ -70,6 +82,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R11
ADDL R10, R11
ROLL $0x1e, R13
// Round 4.
MOVL 16(CX), R9
BSWAPL R9
MOVL R9, 16(SP)
@@ -84,6 +98,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R10
ADDL R9, R10
ROLL $0x1e, R12
// Round 5.
MOVL 20(CX), R8
BSWAPL R8
MOVL R8, 20(SP)
@@ -98,6 +114,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R9
ADDL R8, R9
ROLL $0x1e, R11
// Round 6.
MOVL 24(CX), R8
BSWAPL R8
MOVL R8, 24(SP)
@@ -112,6 +130,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R14
ADDL R8, R14
ROLL $0x1e, R10
// Round 7.
MOVL 28(CX), R8
BSWAPL R8
MOVL R8, 28(SP)
@@ -126,6 +146,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R13
ADDL R8, R13
ROLL $0x1e, R9
// Round 8.
MOVL 32(CX), R8
BSWAPL R8
MOVL R8, 32(SP)
@@ -140,6 +162,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R12
ADDL R8, R12
ROLL $0x1e, R14
// Round 9.
MOVL 36(CX), R8
BSWAPL R8
MOVL R8, 36(SP)
@@ -154,6 +178,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R11
ADDL R8, R11
ROLL $0x1e, R13
// Round 10.
MOVL 40(CX), R8
BSWAPL R8
MOVL R8, 40(SP)
@@ -168,6 +194,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R10
ADDL R8, R10
ROLL $0x1e, R12
// Round 11.
MOVL 44(CX), R8
BSWAPL R8
MOVL R8, 44(SP)
@@ -182,6 +210,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R9
ADDL R8, R9
ROLL $0x1e, R11
// Round 12.
MOVL 48(CX), R8
BSWAPL R8
MOVL R8, 48(SP)
@@ -196,6 +226,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R14
ADDL R8, R14
ROLL $0x1e, R10
// Round 13.
MOVL 52(CX), R8
BSWAPL R8
MOVL R8, 52(SP)
@@ -210,6 +242,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R13
ADDL R8, R13
ROLL $0x1e, R9
// Round 14.
MOVL 56(CX), R8
BSWAPL R8
MOVL R8, 56(SP)
@@ -224,6 +258,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R12
ADDL R8, R12
ROLL $0x1e, R14
// Round 15.
MOVL 60(CX), CX
BSWAPL CX
MOVL CX, 60(SP)
@@ -238,6 +274,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R8
ADDL CX, R8
ROLL $0x1e, R13
// Round 16.
MOVL 52(SP), CX
XORL 32(SP), CX
XORL 8(SP), CX
@@ -255,6 +293,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R10
ADDL CX, R10
ROLL $0x1e, R12
// Round 17.
MOVL 56(SP), CX
XORL 36(SP), CX
XORL 12(SP), CX
@@ -272,6 +312,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R9
ADDL CX, R9
ROLL $0x1e, R8
// Round 18.
MOVL 60(SP), CX
XORL 40(SP), CX
XORL 16(SP), CX
@@ -289,6 +331,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R11
ADDL CX, R11
ROLL $0x1e, R10
// Round 19.
MOVL (SP), CX
XORL 44(SP), CX
XORL 20(SP), CX
@@ -306,6 +350,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R13
ADDL CX, R13
ROLL $0x1e, R9
// Round 20.
MOVL 4(SP), CX
XORL 48(SP), CX
XORL 24(SP), CX
@@ -322,6 +368,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R12
ADDL CX, R12
ROLL $0x1e, R11
// Round 21.
MOVL 8(SP), CX
XORL 52(SP), CX
XORL 28(SP), CX
@@ -338,6 +386,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R8
ADDL CX, R8
ROLL $0x1e, R13
// Round 22.
MOVL 12(SP), CX
XORL 56(SP), CX
XORL 32(SP), CX
@@ -354,6 +404,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R10
ADDL CX, R10
ROLL $0x1e, R12
// Round 23.
MOVL 16(SP), CX
XORL 60(SP), CX
XORL 36(SP), CX
@@ -370,6 +422,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R9
ADDL CX, R9
ROLL $0x1e, R8
// Round 24.
MOVL 20(SP), CX
XORL (SP), CX
XORL 40(SP), CX
@@ -386,6 +440,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R11
ADDL CX, R11
ROLL $0x1e, R10
// Round 25.
MOVL 24(SP), CX
XORL 4(SP), CX
XORL 44(SP), CX
@@ -402,6 +458,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R13
ADDL CX, R13
ROLL $0x1e, R9
// Round 26.
MOVL 28(SP), CX
XORL 8(SP), CX
XORL 48(SP), CX
@@ -418,6 +476,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R12
ADDL CX, R12
ROLL $0x1e, R11
// Round 27.
MOVL 32(SP), CX
XORL 12(SP), CX
XORL 52(SP), CX
@@ -434,6 +494,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R8
ADDL CX, R8
ROLL $0x1e, R13
// Round 28.
MOVL 36(SP), CX
XORL 16(SP), CX
XORL 56(SP), CX
@@ -450,6 +512,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R10
ADDL CX, R10
ROLL $0x1e, R12
// Round 29.
MOVL 40(SP), CX
XORL 20(SP), CX
XORL 60(SP), CX
@@ -466,6 +530,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R9
ADDL CX, R9
ROLL $0x1e, R8
// Round 30.
MOVL 44(SP), CX
XORL 24(SP), CX
XORL (SP), CX
@@ -482,6 +548,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R11
ADDL CX, R11
ROLL $0x1e, R10
// Round 31.
MOVL 48(SP), CX
XORL 28(SP), CX
XORL 4(SP), CX
@@ -498,6 +566,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R13
ADDL CX, R13
ROLL $0x1e, R9
// Round 32.
MOVL 52(SP), CX
XORL 32(SP), CX
XORL 8(SP), CX
@@ -514,6 +584,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R12
ADDL CX, R12
ROLL $0x1e, R11
// Round 33.
MOVL 56(SP), CX
XORL 36(SP), CX
XORL 12(SP), CX
@@ -530,6 +602,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R8
ADDL CX, R8
ROLL $0x1e, R13
// Round 34.
MOVL 60(SP), CX
XORL 40(SP), CX
XORL 16(SP), CX
@@ -546,6 +620,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R10
ADDL CX, R10
ROLL $0x1e, R12
// Round 35.
MOVL (SP), CX
XORL 44(SP), CX
XORL 20(SP), CX
@@ -562,6 +638,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R9
ADDL CX, R9
ROLL $0x1e, R8
// Round 36.
MOVL 4(SP), CX
XORL 48(SP), CX
XORL 24(SP), CX
@@ -578,6 +656,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R11
ADDL CX, R11
ROLL $0x1e, R10
// Round 37.
MOVL 8(SP), CX
XORL 52(SP), CX
XORL 28(SP), CX
@@ -594,6 +674,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R13
ADDL CX, R13
ROLL $0x1e, R9
// Round 38.
MOVL 12(SP), CX
XORL 56(SP), CX
XORL 32(SP), CX
@@ -610,6 +692,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R12
ADDL CX, R12
ROLL $0x1e, R11
// Round 39.
MOVL 16(SP), CX
XORL 60(SP), CX
XORL 36(SP), CX
@@ -626,6 +710,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R8
ADDL CX, R8
ROLL $0x1e, R13
// Round 40.
MOVL 20(SP), CX
XORL (SP), CX
XORL 40(SP), CX
@@ -645,6 +731,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R10
ADDL CX, R10
ROLL $0x1e, R12
// Round 41.
MOVL 24(SP), CX
XORL 4(SP), CX
XORL 44(SP), CX
@@ -664,6 +752,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R9
ADDL CX, R9
ROLL $0x1e, R8
// Round 42.
MOVL 28(SP), CX
XORL 8(SP), CX
XORL 48(SP), CX
@@ -683,6 +773,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R11
ADDL CX, R11
ROLL $0x1e, R10
// Round 43.
MOVL 32(SP), CX
XORL 12(SP), CX
XORL 52(SP), CX
@@ -702,6 +794,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R13
ADDL CX, R13
ROLL $0x1e, R9
// Round 44.
MOVL 36(SP), CX
XORL 16(SP), CX
XORL 56(SP), CX
@@ -721,6 +815,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R12
ADDL CX, R12
ROLL $0x1e, R11
// Round 45.
MOVL 40(SP), CX
XORL 20(SP), CX
XORL 60(SP), CX
@@ -740,6 +836,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R8
ADDL CX, R8
ROLL $0x1e, R13
// Round 46.
MOVL 44(SP), CX
XORL 24(SP), CX
XORL (SP), CX
@@ -759,6 +857,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R10
ADDL CX, R10
ROLL $0x1e, R12
// Round 47.
MOVL 48(SP), CX
XORL 28(SP), CX
XORL 4(SP), CX
@@ -778,6 +878,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R9
ADDL CX, R9
ROLL $0x1e, R8
// Round 48.
MOVL 52(SP), CX
XORL 32(SP), CX
XORL 8(SP), CX
@@ -797,6 +899,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R11
ADDL CX, R11
ROLL $0x1e, R10
// Round 49.
MOVL 56(SP), CX
XORL 36(SP), CX
XORL 12(SP), CX
@@ -816,6 +920,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R13
ADDL CX, R13
ROLL $0x1e, R9
// Round 50.
MOVL 60(SP), CX
XORL 40(SP), CX
XORL 16(SP), CX
@@ -835,6 +941,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R12
ADDL CX, R12
ROLL $0x1e, R11
// Round 51.
MOVL (SP), CX
XORL 44(SP), CX
XORL 20(SP), CX
@@ -854,6 +962,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R8
ADDL CX, R8
ROLL $0x1e, R13
// Round 52.
MOVL 4(SP), CX
XORL 48(SP), CX
XORL 24(SP), CX
@@ -873,6 +983,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R10
ADDL CX, R10
ROLL $0x1e, R12
// Round 53.
MOVL 8(SP), CX
XORL 52(SP), CX
XORL 28(SP), CX
@@ -892,6 +1004,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R9
ADDL CX, R9
ROLL $0x1e, R8
// Round 54.
MOVL 12(SP), CX
XORL 56(SP), CX
XORL 32(SP), CX
@@ -911,6 +1025,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R11
ADDL CX, R11
ROLL $0x1e, R10
// Round 55.
MOVL 16(SP), CX
XORL 60(SP), CX
XORL 36(SP), CX
@@ -930,6 +1046,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R13
ADDL CX, R13
ROLL $0x1e, R9
// Round 56.
MOVL 20(SP), CX
XORL (SP), CX
XORL 40(SP), CX
@@ -949,6 +1067,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R12
ADDL CX, R12
ROLL $0x1e, R11
// Round 57.
MOVL 24(SP), CX
XORL 4(SP), CX
XORL 44(SP), CX
@@ -968,6 +1088,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R8
ADDL CX, R8
ROLL $0x1e, R13
// Round 58.
MOVL 28(SP), CX
XORL 8(SP), CX
XORL 48(SP), CX
@@ -987,6 +1109,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R10
ADDL CX, R10
ROLL $0x1e, R12
// Round 59.
MOVL 32(SP), CX
XORL 12(SP), CX
XORL 52(SP), CX
@@ -1006,6 +1130,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R9
ADDL CX, R9
ROLL $0x1e, R8
// Round 60.
MOVL 36(SP), CX
XORL 16(SP), CX
XORL 56(SP), CX
@@ -1022,6 +1148,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R11
ADDL CX, R11
ROLL $0x1e, R10
// Round 61.
MOVL 40(SP), CX
XORL 20(SP), CX
XORL 60(SP), CX
@@ -1038,6 +1166,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R13
ADDL CX, R13
ROLL $0x1e, R9
// Round 62.
MOVL 44(SP), CX
XORL 24(SP), CX
XORL (SP), CX
@@ -1054,6 +1184,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R12
ADDL CX, R12
ROLL $0x1e, R11
// Round 63.
MOVL 48(SP), CX
XORL 28(SP), CX
XORL 4(SP), CX
@@ -1070,6 +1202,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R8
ADDL CX, R8
ROLL $0x1e, R13
// Round 64.
MOVL 52(SP), CX
XORL 32(SP), CX
XORL 8(SP), CX
@@ -1086,6 +1220,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R10
ADDL CX, R10
ROLL $0x1e, R12
// Round 65.
MOVL 56(SP), CX
XORL 36(SP), CX
XORL 12(SP), CX
@@ -1102,6 +1238,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R9
ADDL CX, R9
ROLL $0x1e, R8
// Round 66.
MOVL 60(SP), CX
XORL 40(SP), CX
XORL 16(SP), CX
@@ -1118,6 +1256,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R11
ADDL CX, R11
ROLL $0x1e, R10
// Round 67.
MOVL (SP), CX
XORL 44(SP), CX
XORL 20(SP), CX
@@ -1134,6 +1274,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R13
ADDL CX, R13
ROLL $0x1e, R9
// Round 68.
MOVL 4(SP), CX
XORL 48(SP), CX
XORL 24(SP), CX
@@ -1150,6 +1292,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R12
ADDL CX, R12
ROLL $0x1e, R11
// Round 69.
MOVL 8(SP), CX
XORL 52(SP), CX
XORL 28(SP), CX
@@ -1166,6 +1310,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R8
ADDL CX, R8
ROLL $0x1e, R13
// Round 70.
MOVL 12(SP), CX
XORL 56(SP), CX
XORL 32(SP), CX
@@ -1182,6 +1328,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R10
ADDL CX, R10
ROLL $0x1e, R12
// Round 71.
MOVL 16(SP), CX
XORL 60(SP), CX
XORL 36(SP), CX
@@ -1198,6 +1346,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R9
ADDL CX, R9
ROLL $0x1e, R8
// Round 72.
MOVL 20(SP), CX
XORL (SP), CX
XORL 40(SP), CX
@@ -1214,6 +1364,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R11
ADDL CX, R11
ROLL $0x1e, R10
// Round 73.
MOVL 24(SP), CX
XORL 4(SP), CX
XORL 44(SP), CX
@@ -1230,6 +1382,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R13
ADDL CX, R13
ROLL $0x1e, R9
// Round 74.
MOVL 28(SP), CX
XORL 8(SP), CX
XORL 48(SP), CX
@@ -1246,6 +1400,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R12
ADDL CX, R12
ROLL $0x1e, R11
// Round 75.
MOVL 32(SP), CX
XORL 12(SP), CX
XORL 52(SP), CX
@@ -1262,6 +1418,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R8
ADDL CX, R8
ROLL $0x1e, R13
// Round 76.
MOVL 36(SP), CX
XORL 16(SP), CX
XORL 56(SP), CX
@@ -1278,6 +1436,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R10
ADDL CX, R10
ROLL $0x1e, R12
// Round 77.
MOVL 40(SP), CX
XORL 20(SP), CX
XORL 60(SP), CX
@@ -1294,6 +1454,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R9
ADDL CX, R9
ROLL $0x1e, R8
// Round 78.
MOVL 44(SP), CX
XORL 24(SP), CX
XORL (SP), CX
@@ -1310,6 +1472,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R11
ADDL CX, R11
ROLL $0x1e, R10
// Round 79.
MOVL 48(SP), CX
XORL 28(SP), CX
XORL 4(SP), CX
@@ -1326,11 +1490,15 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R13
ADDL CX, R13
ROLL $0x1e, R9
// Final add.
ADDL R13, DX
ADDL R11, BX
ADDL R9, BP
ADDL R10, SI
ADDL R8, DI
// Store results back.
MOVL DX, (AX)
MOVL BX, 4(AX)
MOVL BP, 8(AX)