@zkasm/zkevm-rom 0.0.1-security → 6.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of @zkasm/zkevm-rom might be problematic. Click here for more details.
- package/.eslintrc.js +33 -0
- package/.github/CODEOWNERS +14 -0
- package/.github/ISSUE_TEMPLATE/bug.yml +38 -0
- package/.github/ISSUE_TEMPLATE/feature.yml +26 -0
- package/.github/ISSUE_TEMPLATE/question.yml +26 -0
- package/.github/workflows/main.yaml +40 -0
- package/LICENSE +636 -0
- package/README.md +23 -5
- package/audits/Hexens_Polygon_zkEVM_PUBLIC_27.02.23.pdf +0 -0
- package/audits/Polygon-zkEVM-Public-v1.1-verichains-19-03-2024.pdf +0 -0
- package/audits/zkEVM-ROM-upgrade-1-Spearbit-30-May.pdf +0 -0
- package/audits/zkEVM-ROM-upgrade-2-Spearbit-21-August.pdf +0 -0
- package/audits/zkEVM-engagement-1-Spearbit-27-March.pdf +0 -0
- package/audits/zkEVM-engagement-2-Spearbit-27-March.pdf +0 -0
- package/audits/zkEVM-engagement-3-Spearbit-6-April.pdf +0 -0
- package/counters/README.md +45 -0
- package/counters/counters-executor.js +80 -0
- package/counters/countersConstants.zkasm +370 -0
- package/counters/endIncludes.zkasm +18 -0
- package/counters/initIncludes.zkasm +2 -0
- package/counters/tests/MLOAD32.zkasm +27 -0
- package/counters/tests/MLOADX.zkasm +30 -0
- package/counters/tests/MSTORE32.zkasm +32 -0
- package/counters/tests/MSTOREX.zkasm +36 -0
- package/counters/tests/SHLarith.zkasm +28 -0
- package/counters/tests/SHLarithBit.zkasm +28 -0
- package/counters/tests/SHRarith.zkasm +28 -0
- package/counters/tests/SHRarithBit.zkasm +28 -0
- package/counters/tests/abs.zkasm +29 -0
- package/counters/tests/addBatchHashByteByByte.zkasm +31 -0
- package/counters/tests/computeGasSendCall.zkasm +30 -0
- package/counters/tests/divArith.zkasm +27 -0
- package/counters/tests/expAD.zkasm +30 -0
- package/counters/tests/getLenBits.zkasm +30 -0
- package/counters/tests/getLenBytes.zkasm +32 -0
- package/counters/tests/isEmptyAccount.zkasm +30 -0
- package/counters/tests/mulARITH.zkasm +28 -0
- package/counters/tests/offsetUtil.zkasm +29 -0
- package/counters/tests/opADDMOD.zkasm +28 -0
- package/counters/tests/opAdd.zkasm +27 -0
- package/counters/tests/opBLOCKHASH.zkasm +28 -0
- package/counters/tests/opCALL.zkasm +41 -0
- package/counters/tests/opCALLCODE.zkasm +41 -0
- package/counters/tests/opCALLDATACOPY.zkasm +28 -0
- package/counters/tests/opCALLDATALOAD.zkasm +27 -0
- package/counters/tests/opCODECOPY.zkasm +28 -0
- package/counters/tests/opCREATE.zkasm +35 -0
- package/counters/tests/opCREATE2.zkasm +35 -0
- package/counters/tests/opDELEGATECALL.zkasm +35 -0
- package/counters/tests/opDIV.zkasm +27 -0
- package/counters/tests/opEXP.zkasm +29 -0
- package/counters/tests/opEXTCODECOPY.zkasm +29 -0
- package/counters/tests/opMOD.zkasm +27 -0
- package/counters/tests/opMUL.zkasm +27 -0
- package/counters/tests/opMULMOD.zkasm +28 -0
- package/counters/tests/opRETURN.zkasm +32 -0
- package/counters/tests/opRETURNDATACOPY.zkasm +29 -0
- package/counters/tests/opREVERT.zkasm +32 -0
- package/counters/tests/opSDIV.zkasm +28 -0
- package/counters/tests/opSHA3.zkasm +28 -0
- package/counters/tests/opSIGNEXTEND.zkasm +27 -0
- package/counters/tests/opSMOD.zkasm +28 -0
- package/counters/tests/opSTATICCALL.zkasm +35 -0
- package/counters/tests/opSUB.zkasm +27 -0
- package/counters/tests/saveMem.zkasm +31 -0
- package/docs/opcode-cost-zk-counters.md +315 -0
- package/docs/usage-ecrecover.md +51 -0
- package/index.js +43 -0
- package/main/block-info.zkasm +204 -0
- package/main/constants.zkasm +145 -0
- package/main/ecrecover/addFpEc.zkasm +31 -0
- package/main/ecrecover/checkSqrtFpEc.zkasm +1558 -0
- package/main/ecrecover/constEc.zkasm +13 -0
- package/main/ecrecover/ecrecover.zkasm +280 -0
- package/main/ecrecover/invFnEc.zkasm +44 -0
- package/main/ecrecover/invFpEc.zkasm +45 -0
- package/main/ecrecover/mulFnEc.zkasm +36 -0
- package/main/ecrecover/mulFpEc.zkasm +36 -0
- package/main/ecrecover/mulPointEc.zkasm +311 -0
- package/main/ecrecover/sqFpEc.zkasm +38 -0
- package/main/ecrecover/sqrtFpEc.zkasm +70 -0
- package/main/end.zkasm +4 -0
- package/main/l2-tx-hash.zkasm +159 -0
- package/main/load-change-l2-block-utils.zkasm +11 -0
- package/main/load-change-l2-block.zkasm +28 -0
- package/main/load-tx-rlp-utils.zkasm +72 -0
- package/main/load-tx-rlp.zkasm +431 -0
- package/main/main.zkasm +237 -0
- package/main/map-opcodes.zkasm +274 -0
- package/main/modexp/array_lib/array_add_AGTB.zkasm +123 -0
- package/main/modexp/array_lib/array_add_short.zkasm +85 -0
- package/main/modexp/array_lib/array_div.zkasm +215 -0
- package/main/modexp/array_lib/array_div_long.zkasm +284 -0
- package/main/modexp/array_lib/array_div_short.zkasm +222 -0
- package/main/modexp/array_lib/array_mul.zkasm +97 -0
- package/main/modexp/array_lib/array_mul_long.zkasm +156 -0
- package/main/modexp/array_lib/array_mul_short.zkasm +127 -0
- package/main/modexp/array_lib/array_square.zkasm +246 -0
- package/main/modexp/array_lib/unused/array_add.zkasm +100 -0
- package/main/modexp/array_lib/unused/array_is_odd.zkasm +23 -0
- package/main/modexp/array_lib/unused/array_is_one.zkasm +33 -0
- package/main/modexp/array_lib/unused/array_is_zero.zkasm +34 -0
- package/main/modexp/array_lib/unused/array_sub_AGTB.zkasm +111 -0
- package/main/modexp/array_lib/unused/array_unshift.zkasm +37 -0
- package/main/modexp/array_lib/utils/array_compare.zkasm +82 -0
- package/main/modexp/array_lib/utils/array_trim.zkasm +49 -0
- package/main/modexp/constants.zkasm +5 -0
- package/main/modexp/modexp.zkasm +296 -0
- package/main/modexp/modexp_utils.zkasm +230 -0
- package/main/opcodes/arithmetic.zkasm +357 -0
- package/main/opcodes/block.zkasm +163 -0
- package/main/opcodes/calldata-returndata-code.zkasm +619 -0
- package/main/opcodes/comparison.zkasm +446 -0
- package/main/opcodes/context-information.zkasm +169 -0
- package/main/opcodes/create-terminate-context.zkasm +1011 -0
- package/main/opcodes/crypto.zkasm +96 -0
- package/main/opcodes/flow-control.zkasm +126 -0
- package/main/opcodes/logs.zkasm +193 -0
- package/main/opcodes/stack-operations.zkasm +658 -0
- package/main/opcodes/storage-memory.zkasm +313 -0
- package/main/pairings/BN254/addPointBN254.zkasm +245 -0
- package/main/pairings/BN254/ecAdd.zkasm +312 -0
- package/main/pairings/BN254/ecMul.zkasm +159 -0
- package/main/pairings/BN254/escalarMulBN254.zkasm +155 -0
- package/main/pairings/BN254/lineDiffPointsBN254.zkasm +83 -0
- package/main/pairings/BN254/lineSamePointsBN254.zkasm +96 -0
- package/main/pairings/FP12BN254/CYCLOFP12BN254/compressFp12BN254.zkasm +49 -0
- package/main/pairings/FP12BN254/CYCLOFP12BN254/decompressFp12BN254.zkasm +236 -0
- package/main/pairings/FP12BN254/CYCLOFP12BN254/expByXCompCycloFp12BN254.zkasm +444 -0
- package/main/pairings/FP12BN254/CYCLOFP12BN254/squareCompCycloFp12BN254.zkasm +212 -0
- package/main/pairings/FP12BN254/CYCLOFP12BN254/squareCycloFp12BN254.zkasm +228 -0
- package/main/pairings/FP12BN254/CYCLOFP12BN254/xBinDecompBN254.zkasm +64 -0
- package/main/pairings/FP12BN254/frob2Fp12BN254.zkasm +80 -0
- package/main/pairings/FP12BN254/frob3Fp12BN254.zkasm +96 -0
- package/main/pairings/FP12BN254/frobFp12BN254.zkasm +96 -0
- package/main/pairings/FP12BN254/inverseFp12BN254.zkasm +289 -0
- package/main/pairings/FP12BN254/mulFp12BN254.zkasm +408 -0
- package/main/pairings/FP12BN254/sparseMulAFp12BN254.zkasm +296 -0
- package/main/pairings/FP12BN254/sparseMulBFp12BN254.zkasm +291 -0
- package/main/pairings/FP12BN254/squareFp12BN254.zkasm +376 -0
- package/main/pairings/FP2BN254/addFp2BN254.zkasm +19 -0
- package/main/pairings/FP2BN254/escalarMulFp2BN254.zkasm +20 -0
- package/main/pairings/FP2BN254/invFp2BN254.zkasm +66 -0
- package/main/pairings/FP2BN254/mulFp2BN254.zkasm +19 -0
- package/main/pairings/FP2BN254/squareFp2BN254.zkasm +21 -0
- package/main/pairings/FP2BN254/subFp2BN254.zkasm +19 -0
- package/main/pairings/FP4BN254/squareFp4BN254.zkasm +76 -0
- package/main/pairings/FP6BN254/addFp6BN254.zkasm +59 -0
- package/main/pairings/FP6BN254/escalarMulFp6BN254.zkasm +51 -0
- package/main/pairings/FP6BN254/inverseFp6BN254.zkasm +208 -0
- package/main/pairings/FP6BN254/mulFp6BN254.zkasm +201 -0
- package/main/pairings/FP6BN254/sparseMulAFp6BN254.zkasm +65 -0
- package/main/pairings/FP6BN254/sparseMulBFp6BN254.zkasm +134 -0
- package/main/pairings/FP6BN254/sparseMulCFp6BN254.zkasm +128 -0
- package/main/pairings/FP6BN254/squareFp6BN254.zkasm +147 -0
- package/main/pairings/FP6BN254/subFp6BN254.zkasm +59 -0
- package/main/pairings/FPBN254/addFpBN254.zkasm +29 -0
- package/main/pairings/FPBN254/invFpBN254.zkasm +55 -0
- package/main/pairings/FPBN254/mulFpBN254.zkasm +29 -0
- package/main/pairings/FPBN254/reduceFpBN254.zkasm +25 -0
- package/main/pairings/FPBN254/squareFpBN254.zkasm +31 -0
- package/main/pairings/FPBN254/subFpBN254.zkasm +36 -0
- package/main/pairings/FRBN254/reduceFrBN254.zkasm +25 -0
- package/main/pairings/constants.zkasm +62 -0
- package/main/pairings/ecPairing.zkasm +244 -0
- package/main/pairings/finalExpBN254.zkasm +2095 -0
- package/main/pairings/halfPairingBN254.zkasm +428 -0
- package/main/pairings/loopLengthBN254.zkasm +75 -0
- package/main/pairings/millerLoopBN254.zkasm +741 -0
- package/main/pairings/pairingBN254.zkasm +481 -0
- package/main/pairings/unused/addFp12BN254.zkasm +130 -0
- package/main/pairings/unused/expByXCycloFp12BN254.zkasm +411 -0
- package/main/pairings/unused/expFp12BN254.zkasm +333 -0
- package/main/pairings/unused/subFp12BN254.zkasm +130 -0
- package/main/pairings/unused/xPseudoBinDecompBN254.zkasm +68 -0
- package/main/pairings/utilsTests/expCycloFp12BN254.zkasm +334 -0
- package/main/precompiled/end.zkasm +42 -0
- package/main/precompiled/identity.zkasm +99 -0
- package/main/precompiled/pre-ecAdd.zkasm +84 -0
- package/main/precompiled/pre-ecMul.zkasm +82 -0
- package/main/precompiled/pre-ecPairing.zkasm +72 -0
- package/main/precompiled/pre-ecrecover.zkasm +71 -0
- package/main/precompiled/pre-modexp.zkasm +367 -0
- package/main/precompiled/pre-sha2-256.zkasm +125 -0
- package/main/precompiled/revert-precompiled.zkasm +25 -0
- package/main/precompiled/selector.zkasm +77 -0
- package/main/process-change-l2-block.zkasm +147 -0
- package/main/process-tx.zkasm +587 -0
- package/main/tables/2-exp.zkasm +260 -0
- package/main/touched.zkasm +118 -0
- package/main/utils.zkasm +2335 -0
- package/main/vars.zkasm +117 -0
- package/package.json +62 -3
- package/test/bytes-length.zkasm +39 -0
- package/test/ecrecover.zkasm +538 -0
- package/test/lt4-test.zkasm +38 -0
- package/test/mstorex.zkasm +191 -0
- package/test/opcalldatacopy.ignore.zkasm +331 -0
- package/test/performance/read-push.zkasm +71 -0
- package/test/read-push.zkasm +304 -0
- package/test/testArrayArith.zkasm +1099 -0
- package/test/testArrayUtils.zkasm +335 -0
- package/test/testCycloFp12ArithBN254.zkasm +548 -0
- package/test/testEcAdd.zkasm +252 -0
- package/test/testEcMul.zkasm +231 -0
- package/test/testEcPairing.zkasm +436 -0
- package/test/testFinalExpBn254.zkasm +139 -0
- package/test/testFp12ArithBN254.zkasm +692 -0
- package/test/testFp2ArithBN254.zkasm +185 -0
- package/test/testFp4ArithBN254.zkasm +128 -0
- package/test/testFp6ArithBN254.zkasm +260 -0
- package/test/testFpArithBN254.zkasm +159 -0
- package/test/testFrArithBN254.zkasm +113 -0
- package/test/testHalfPairingBN254.zkasm +285 -0
- package/test/testModExp.zkasm +586 -0
- package/test/testModExpReturn.zkasm +81 -0
- package/test/testPairingBN254.zkasm +463 -0
- package/test/testPointArithBN254.zkasm +270 -0
- package/test/testSHA256.zkasm +27 -0
- package/test/touched-assert.zkasm +59 -0
- package/test/utils-expAD.zkasm +48 -0
- package/test/utils-getLenBytes.zkasm +36 -0
- package/tools/audit-tools/registry-op-checker.js +71 -0
- package/tools/get-not-used-labels.js +31 -0
- package/tools/helpers/helpers.js +47 -0
- package/tools/modexp-utils/README.md +5 -0
- package/tools/modexp-utils/modexp-test-gen.js +168 -0
- package/tools/modexp-utils/modexp-test-int.sage +37 -0
- package/tools/parallel-testing/checker.sh +6 -0
- package/tools/parallel-testing/gen-parallel-tests.js +78 -0
- package/tools/parallel-testing/parallel-tests-sample/sample.test.js +136 -0
- package/tools/run-tests-zkasm.js +83 -0
@@ -0,0 +1,304 @@
|
|
1
|
+
VAR GLOBAL test
|
2
|
+
|
3
|
+
;; Comments 'readPush' function
|
4
|
+
; @info Read bytes opcode PUSHX
|
5
|
+
; @internalParam {numBlocks} 4 bytes blocks to read
|
6
|
+
; @internalParam {leftBytes} remaining bytes
|
7
|
+
; @in D => bytes to read
|
8
|
+
; @out E => value read
|
9
|
+
|
10
|
+
start:
|
11
|
+
; init vars
|
12
|
+
0 => HASHPOS
|
13
|
+
1 => D
|
14
|
+
$${var rounds}
|
15
|
+
|
16
|
+
; add bytes one by one
|
17
|
+
0x0102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20n => A :CALL(initLoop)
|
18
|
+
0x2122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F40n => A :CALL(initLoop)
|
19
|
+
0x4142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F60n => A :CALL(initLoop)
|
20
|
+
|
21
|
+
; close hash
|
22
|
+
HASHPOS :HASHPLEN(0)
|
23
|
+
$ :HASHPDIGEST(0)
|
24
|
+
0 :MSTORE(contractHashId)
|
25
|
+
|
26
|
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
27
|
+
;;;;; INIT TESTS ;;;;;
|
28
|
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
29
|
+
; log init counters
|
30
|
+
CNT_BINARY => A
|
31
|
+
; ${log(A, binaryCouners)} ; result: 1
|
32
|
+
STEP => A
|
33
|
+
; ${log(A, stepCounter)} ; result: 202
|
34
|
+
|
35
|
+
;; Start test PUSH1
|
36
|
+
; PUSH1 reading 1 byte at position 0 in the bytecode
|
37
|
+
0 => PC
|
38
|
+
1 => D,E :CALL(readPush)
|
39
|
+
0x01 => A
|
40
|
+
E :ASSERT
|
41
|
+
|
42
|
+
; PUSH1 reading 1 byte at position 20 in the bytecode
|
43
|
+
20 => PC
|
44
|
+
1 => D,E :CALL(readPush)
|
45
|
+
0x15 => A
|
46
|
+
E :ASSERT
|
47
|
+
|
48
|
+
; PUSH1 reading 1 byte at position 31 in the bytecode
|
49
|
+
31 => PC
|
50
|
+
1 => D,E :CALL(readPush)
|
51
|
+
0x20 => A
|
52
|
+
E :ASSERT
|
53
|
+
|
54
|
+
; PUSH1 reading 1 byte at position 32 in the bytecode
|
55
|
+
32 => PC
|
56
|
+
1 => D,E :CALL(readPush)
|
57
|
+
0x21 => A
|
58
|
+
E :ASSERT
|
59
|
+
|
60
|
+
; PUSH1 reading 1 byte at position 33 in the bytecode
|
61
|
+
33 => PC
|
62
|
+
1 => D,E :CALL(readPush)
|
63
|
+
0x22 => A
|
64
|
+
E :ASSERT
|
65
|
+
|
66
|
+
;; Start test PUSH2
|
67
|
+
; PUSH2 reading 2 byte at position 4 in the bytecode
|
68
|
+
4 => PC
|
69
|
+
2 => D,E :CALL(readPush)
|
70
|
+
0x0506 => A
|
71
|
+
E :ASSERT
|
72
|
+
|
73
|
+
; PUSH2 reading 2 byte at position 34 in the bytecode
|
74
|
+
34 => PC
|
75
|
+
2 => D,E :CALL(readPush)
|
76
|
+
0x2324 => A
|
77
|
+
E :ASSERT
|
78
|
+
|
79
|
+
;; Start test PUSH3
|
80
|
+
; PUSH3 reading 3 byte at position 60 in the bytecode
|
81
|
+
60 => PC
|
82
|
+
3 => D,E :CALL(readPush)
|
83
|
+
0x3d3e3f => A
|
84
|
+
E :ASSERT
|
85
|
+
|
86
|
+
;; Start test PUSH4
|
87
|
+
; PUSH4 reading 4 byte at position 72 in the bytecode
|
88
|
+
72 => PC
|
89
|
+
4 => D,E :CALL(readPush)
|
90
|
+
0x494a4b4c => A
|
91
|
+
E :ASSERT
|
92
|
+
|
93
|
+
;; Start test PUSH5
|
94
|
+
; PUSH5 reading 5 byte at position 42 in the bytecode
|
95
|
+
42 => PC
|
96
|
+
5 => D,E :CALL(readPush)
|
97
|
+
0x2B2C2D2E2Fn => A
|
98
|
+
E :ASSERT
|
99
|
+
|
100
|
+
;; Start test PUSH6
|
101
|
+
; PUSH6 reading 6 byte at position 42 in the bytecode
|
102
|
+
42 => PC
|
103
|
+
6 => D,E :CALL(readPush)
|
104
|
+
0x2B2C2D2E2F30n => A
|
105
|
+
E :ASSERT
|
106
|
+
|
107
|
+
;; Start test PUSH7
|
108
|
+
; PUSH7 reading 7 byte at position 42 in the bytecode
|
109
|
+
42 => PC
|
110
|
+
7 => D,E :CALL(readPush)
|
111
|
+
0x2B2C2D2E2F3031n => A
|
112
|
+
E :ASSERT
|
113
|
+
|
114
|
+
;; Start test PUSH8
|
115
|
+
; PUSH8 reading 8 byte at position 42 in the bytecode
|
116
|
+
42 => PC
|
117
|
+
8 => D,E :CALL(readPush)
|
118
|
+
0x2B2C2D2E2F303132n => A
|
119
|
+
E :ASSERT
|
120
|
+
|
121
|
+
;; Start test PUSH9
|
122
|
+
; PUSH9 reading 9 byte at position 42 in the bytecode
|
123
|
+
42 => PC
|
124
|
+
9 => D,E :CALL(readPush)
|
125
|
+
0x2B2C2D2E2F30313233n => A
|
126
|
+
E :ASSERT
|
127
|
+
|
128
|
+
;; Start test PUSH10
|
129
|
+
; PUSH10 reading 10 byte at position 42 in the bytecode
|
130
|
+
42 => PC
|
131
|
+
10 => D,E :CALL(readPush)
|
132
|
+
0x2B2C2D2E2F3031323334n => A
|
133
|
+
E :ASSERT
|
134
|
+
|
135
|
+
;; Start test PUSH11
|
136
|
+
; PUSH11 reading 11 byte at position 42 in the bytecode
|
137
|
+
42 => PC
|
138
|
+
11 => D,E :CALL(readPush)
|
139
|
+
0x2B2C2D2E2F303132333435n => A
|
140
|
+
E :ASSERT
|
141
|
+
|
142
|
+
;; Start test PUSH12
|
143
|
+
; PUSH12 reading 12 byte at position 42 in the bytecode
|
144
|
+
42 => PC
|
145
|
+
12 => D,E :CALL(readPush)
|
146
|
+
0x2B2C2D2E2F30313233343536n => A
|
147
|
+
E :ASSERT
|
148
|
+
|
149
|
+
;; Start test PUSH13
|
150
|
+
; PUSH13 reading 13 byte at position 42 in the bytecode
|
151
|
+
42 => PC
|
152
|
+
13 => D,E :CALL(readPush)
|
153
|
+
0x2B2C2D2E2F3031323334353637n => A
|
154
|
+
E :ASSERT
|
155
|
+
|
156
|
+
;; Start test PUSH14
|
157
|
+
; PUSH14 reading 14 byte at position 42 in the bytecode
|
158
|
+
42 => PC
|
159
|
+
14 => D,E :CALL(readPush)
|
160
|
+
0x2B2C2D2E2F303132333435363738n => A
|
161
|
+
E :ASSERT
|
162
|
+
|
163
|
+
;; Start test PUSH15
|
164
|
+
; PUSH15 reading 15 byte at position 42 in the bytecode
|
165
|
+
42 => PC
|
166
|
+
15 => D,E :CALL(readPush)
|
167
|
+
0x2B2C2D2E2F30313233343536373839n => A
|
168
|
+
E :ASSERT
|
169
|
+
|
170
|
+
;; Start test PUSH16
|
171
|
+
; PUSH16 reading 16 byte at position 42 in the bytecode
|
172
|
+
42 => PC
|
173
|
+
16 => D,E :CALL(readPush)
|
174
|
+
0x2B2C2D2E2F303132333435363738393An => A
|
175
|
+
E :ASSERT
|
176
|
+
|
177
|
+
;; Start test PUSH17
|
178
|
+
; PUSH17 reading 17 byte at position 42 in the bytecode
|
179
|
+
42 => PC
|
180
|
+
17 => D,E :CALL(readPush)
|
181
|
+
0x2B2C2D2E2F303132333435363738393A3Bn => A
|
182
|
+
E :ASSERT
|
183
|
+
|
184
|
+
;; Start test PUSH18
|
185
|
+
; PUSH18 reading 18 byte at position 42 in the bytecode
|
186
|
+
42 => PC
|
187
|
+
18 => D,E :CALL(readPush)
|
188
|
+
0x2B2C2D2E2F303132333435363738393A3B3Cn => A
|
189
|
+
E :ASSERT
|
190
|
+
|
191
|
+
;; Start test PUSH19
|
192
|
+
; PUSH19 reading 19 byte at position 42 in the bytecode
|
193
|
+
42 => PC
|
194
|
+
19 => D,E :CALL(readPush)
|
195
|
+
0x2B2C2D2E2F303132333435363738393A3B3C3Dn => A
|
196
|
+
E :ASSERT
|
197
|
+
|
198
|
+
;; Start test PUSH20
|
199
|
+
; PUSH20 reading 20 byte at position 42 in the bytecode
|
200
|
+
42 => PC
|
201
|
+
20 => D,E :CALL(readPush)
|
202
|
+
0x2B2C2D2E2F303132333435363738393A3B3C3D3En => A
|
203
|
+
E :ASSERT
|
204
|
+
|
205
|
+
;; Start test PUSH21
|
206
|
+
; PUSH21 reading 21 byte at position 42 in the bytecode
|
207
|
+
42 => PC
|
208
|
+
21 => D,E :CALL(readPush)
|
209
|
+
0x2B2C2D2E2F303132333435363738393A3B3C3D3E3Fn => A
|
210
|
+
E :ASSERT
|
211
|
+
|
212
|
+
;; Start test PUSH22
|
213
|
+
; PUSH22 reading 22 byte at position 42 in the bytecode
|
214
|
+
42 => PC
|
215
|
+
22 => D,E :CALL(readPush)
|
216
|
+
0x2B2C2D2E2F303132333435363738393A3B3C3D3E3F40n => A
|
217
|
+
E :ASSERT
|
218
|
+
|
219
|
+
;; Start test PUSH23
|
220
|
+
; PUSH23 reading 23 byte at position 42 in the bytecode
|
221
|
+
42 => PC
|
222
|
+
23 => D,E :CALL(readPush)
|
223
|
+
0x2B2C2D2E2F303132333435363738393A3B3C3D3E3F4041n => A
|
224
|
+
E :ASSERT
|
225
|
+
|
226
|
+
;; Start test PUSH24
|
227
|
+
; PUSH24 reading 24 byte at position 42 in the bytecode
|
228
|
+
42 => PC
|
229
|
+
24 => D,E :CALL(readPush)
|
230
|
+
0x2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142n => A
|
231
|
+
E :ASSERT
|
232
|
+
|
233
|
+
;; Start test PUSH25
|
234
|
+
; PUSH25 reading 25 byte at position 42 in the bytecode
|
235
|
+
42 => PC
|
236
|
+
25 => D,E :CALL(readPush)
|
237
|
+
0x2B2C2D2E2F303132333435363738393A3B3C3D3E3F40414243n => A
|
238
|
+
E :ASSERT
|
239
|
+
|
240
|
+
;; Start test PUSH26
|
241
|
+
; PUSH26 reading 26 byte at position 42 in the bytecode
|
242
|
+
42 => PC
|
243
|
+
26 => D,E :CALL(readPush)
|
244
|
+
0x2B2C2D2E2F303132333435363738393A3B3C3D3E3F4041424344n => A
|
245
|
+
E :ASSERT
|
246
|
+
|
247
|
+
;; Start test PUSH27
|
248
|
+
; PUSH27 reading 27 byte at position 42 in the bytecode
|
249
|
+
42 => PC
|
250
|
+
27 => D,E :CALL(readPush)
|
251
|
+
0x2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445n => A
|
252
|
+
E :ASSERT
|
253
|
+
|
254
|
+
;; Start test PUSH28
|
255
|
+
; PUSH28 reading 28 byte at position 42 in the bytecode
|
256
|
+
42 => PC
|
257
|
+
28 => D,E :CALL(readPush)
|
258
|
+
0x2B2C2D2E2F303132333435363738393A3B3C3D3E3F40414243444546n => A
|
259
|
+
E :ASSERT
|
260
|
+
|
261
|
+
;; Start test PUSH29
|
262
|
+
; PUSH29 reading 29 byte at position 42 in the bytecode
|
263
|
+
42 => PC
|
264
|
+
29 => D,E :CALL(readPush)
|
265
|
+
0x2B2C2D2E2F303132333435363738393A3B3C3D3E3F4041424344454647n => A
|
266
|
+
E :ASSERT
|
267
|
+
|
268
|
+
;; Start test PUSH30
|
269
|
+
; PUSH30 reading 30 byte at position 42 in the bytecode
|
270
|
+
42 => PC
|
271
|
+
30 => D,E :CALL(readPush)
|
272
|
+
0x2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748n => A
|
273
|
+
E :ASSERT
|
274
|
+
|
275
|
+
;; Start test PUSH31
|
276
|
+
; PUSH31 reading 31 byte at position 42 in the bytecode
|
277
|
+
42 => PC
|
278
|
+
31 => D,E :CALL(readPush)
|
279
|
+
0x2B2C2D2E2F303132333435363738393A3B3C3D3E3F40414243444546474849n => A
|
280
|
+
E :ASSERT
|
281
|
+
|
282
|
+
;; Start test PUSH32
|
283
|
+
; PUSH32 reading 32 byte at position 42 in the bytecode
|
284
|
+
42 => PC
|
285
|
+
32 => D,E :CALL(readPush)
|
286
|
+
0x2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494An => A
|
287
|
+
E :ASSERT
|
288
|
+
|
289
|
+
0 => A,B,C,D,E,CTX, SP, PC, GAS, SR, HASHPOS, RR ; Set all registers to 0
|
290
|
+
:JMP(finalizeExecution)
|
291
|
+
|
292
|
+
initLoop:
|
293
|
+
$${rounds = 32}
|
294
|
+
0 => B ; to allow $$
|
295
|
+
|
296
|
+
loopAdd32Byte:
|
297
|
+
$${rounds = rounds - 1}
|
298
|
+
${(A >> (rounds * 8)) & 0xFF} => E :HASHP1(0)
|
299
|
+
${rounds} :JMPZ(endLoop, loopAdd32Byte)
|
300
|
+
|
301
|
+
endLoop:
|
302
|
+
:RETURN
|
303
|
+
|
304
|
+
INCLUDE "../main/main.zkasm"
|