diff --git a/bootloader_input.json b/bootloader_input.json index 6b84cad..77e023c 100644 --- a/bootloader_input.json +++ b/bootloader_input.json @@ -3,17 +3,19 @@ "prime": "0x800000000000011000000000000000000000000000000000000000000000001", "compiler_version": "2.6.3", "bytecode": [ + "0x40780017fff7fff", + "0x1", "0xa0680017fff8000", "0x7", "0x482680017ffa8000", "0x100000000000000000000000000000000", - "0x400280007ff97fff", + "0x400280007ff87fff", "0x10780017fff7fff", - "0xb6", + "0xc0", "0x4825800180007ffa", "0x0", - "0x400280007ff97fff", - "0x482680017ff98000", + "0x400280007ff87fff", + "0x482680017ff88000", "0x1", "0x48297ffc80007ffd", "0x20680017fff7fff", @@ -35,7 +37,7 @@ "0x480680017fff8000", "0x0", "0x20680017fff7ffe", - "0x20", + "0x21", "0x40780017fff7fff", "0x1", "0x48127ff97fff8000", @@ -46,7 +48,7 @@ "0x48127ffa7fff8000", "0x480080007ff88000", "0x1104800180018000", - "0xa0", + "0xab", "0x20680017fff7ffa", "0xb", "0x48127ff87fff8000", @@ -57,14 +59,15 @@ "0x48127ff97fff8000", "0x48127ff97fff8000", "0x10780017fff7fff", - "0x14", - "0x48127ff87fff8000", + "0x15", "0x48127ff87fff8000", + "0x480a7ff97fff8000", + "0x48127ff77fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", - "0x48127ffa7fff8000", - "0x48127ffa7fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", "0x208b7fff7fff7ffe", "0x48127ffa7fff8000", "0x48127ff87fff8000", @@ -77,103 +80,111 @@ "0x480680017fff8000", "0x0", "0x20680017fff7ffd", - "0x64", + "0x6c", "0x48307ffb80007ffc", "0x20680017fff7fff", "0x4", "0x10780017fff7fff", - "0x10", + "0x11", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", "0x400080007ffe7fff", "0x48127ff67fff8000", - "0x48127ff67fff8000", + "0x480a7ff97fff8000", + "0x48127ff57fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", - "0x48127ffa7fff8000", - "0x482480017ff98000", + "0x48127ff97fff8000", + "0x482480017ff88000", "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x27a", + "0x2ea", "0x482480017fff8000", - "0x279", + "0x2e9", "0x480080007fff8000", + "0x480080017fff8000", + "0x482480017fff8000", + "0x3cc8", "0xa0680017fff8000", - "0x9", - "0x4824800180007ff4", - "0x254e", + "0x8", + "0x48307ffe80007ff2", "0x482480017fff8000", "0x100000000000000000000000000000000", - "0x400080007ff17fff", + "0x400080007fef7fff", "0x10780017fff7fff", - "0x34", - "0x4824800180007ff4", - "0x254e", - "0x400080007ff27fff", - "0x482480017ff28000", + "0x38", + "0x48307ffe80007ff2", + "0x400080007ff07fff", + "0x482480017ff08000", "0x1", - "0x48127ff67fff8000", - "0x48127ff67fff8000", + "0x480a7ff97fff8000", + "0x48127ff37fff8000", + "0x48127ff37fff8000", "0x1104800180018000", - "0xb3", + "0xba", + "0x40137ffc7fff8000", "0x20680017fff7ffd", - "0x21", + "0x23", "0x40780017fff7fff", "0x1", "0x48307ffd80007ffe", "0x400080007ffe7fff", - "0x48127ffa7fff8000", - "0x48127fb67fff8000", + "0x48127ff97fff8000", + "0x48127f977fff8000", "0x48127ffa7fff8000", "0x48127ffa7fff8000", "0x48127ffa7fff8000", "0x482480017ff98000", "0x1", "0x1104800180018000", - "0x146", + "0x1b3", "0x20680017fff7ffd", - "0xa", - "0x48127ffb7fff8000", + "0xb", "0x48127ffb7fff8000", + "0x480a80007fff8000", + "0x48127ffa7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x0", - "0x48127ffa7fff8000", - "0x48127ffa7fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", "0x208b7fff7fff7ffe", "0x48127ffb7fff8000", - "0x48127ffb7fff8000", + "0x480a80007fff8000", + "0x48127ffa7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", - "0x48127ffa7fff8000", - "0x48127ffa7fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", "0x208b7fff7fff7ffe", - "0x48127ffc7fff8000", - "0x48127fb87fff8000", + "0x48127ffb7fff8000", + "0x480a80007fff8000", + "0x48127f987fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", - "0x48127ffa7fff8000", - "0x48127ffa7fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x4f7574206f6620676173", "0x400080007ffe7fff", - "0x482480017fef8000", + "0x482480017fed8000", "0x1", - "0x48127fef7fff8000", + "0x480a7ff97fff8000", + "0x48127fec7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", - "0x48127ffa7fff8000", - "0x482480017ff98000", + "0x48127ff97fff8000", + "0x482480017ff88000", "0x1", "0x208b7fff7fff7ffe", "0x40780017fff7fff", @@ -182,12 +193,13 @@ "0x4661696c656420746f20646573657269616c697a6520706172616d202331", "0x400080007ffe7fff", "0x48127ff77fff8000", - "0x48127ff77fff8000", + "0x480a7ff97fff8000", + "0x48127ff67fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", - "0x48127ffa7fff8000", - "0x482480017ff98000", + "0x48127ff97fff8000", + "0x482480017ff88000", "0x1", "0x208b7fff7fff7ffe", "0x40780017fff7fff", @@ -195,14 +207,15 @@ "0x480680017fff8000", "0x4f7574206f6620676173", "0x400080007ffe7fff", - "0x482680017ff98000", + "0x482680017ff88000", "0x1", + "0x480a7ff97fff8000", "0x480a7ffa7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", - "0x48127ffa7fff8000", - "0x482480017ff98000", + "0x48127ff97fff8000", + "0x482480017ff88000", "0x1", "0x208b7fff7fff7ffe", "0xa0680017fff8000", @@ -297,13 +310,13 @@ "0x482480017ff78000", "0x1", "0x208b7fff7fff7ffe", - "0x480a7ffb7fff8000", + "0x480a7ffa7fff8000", "0x480a7ffc7fff8000", "0x480a7ffd7fff8000", "0x1104800180018000", - "0xe1", + "0x148", "0x20680017fff7ffc", - "0x8f", + "0xf5", "0x48507ffd7ffd8000", "0xa0680017fff8000", "0x7", @@ -311,7 +324,7 @@ "0x100000000", "0x400080007ff67fff", "0x10780017fff7fff", - "0x78", + "0xdd", "0x482480017ffe8000", "0xffffffffffffffffffffffff00000000", "0x400080007ff67fff", @@ -322,7 +335,7 @@ "0x100000000", "0x400080017ff37fff", "0x10780017fff7fff", - "0x5e", + "0xc2", "0x482480017ffe8000", "0xffffffffffffffffffffffff00000000", "0x400080017ff37fff", @@ -333,7 +346,7 @@ "0x100000000", "0x400080027ff07fff", "0x10780017fff7fff", - "0x44", + "0xa7", "0x482480017ffe8000", "0xffffffffffffffffffffffff00000000", "0x400080027ff07fff", @@ -344,7 +357,7 @@ "0x100000000", "0x400080037fed7fff", "0x10780017fff7fff", - "0x2a", + "0x8c", "0x48307ff97ff68001", "0x4824800180007fff", "0xffffffffffffffffffffffff00000000", @@ -355,108 +368,211 @@ "0x20680017fff7fff", "0x4", "0x10780017fff7fff", - "0x10", + "0x11", "0x40780017fff7fff", - "0x2", + "0x1f", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x696e76616c69642076616c7565", "0x400080007ffe7fff", - "0x48127ffa7fff8000", + "0x48127fdd7fff8000", + "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", - "0x48127ffc7fff8000", - "0x482480017ffb8000", + "0x48127ffb7fff8000", + "0x482480017ffa8000", "0x1", "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x20000", + "0x20680017fff7fff", + "0x11", + "0x40780017fff7fff", + "0x1e", "0x40780017fff7fff", "0x1", - "0x48127ff17fff8000", - "0x48127ff37fff8000", - "0x48127ff57fff8000", + "0x480680017fff8000", + "0x4469766973696f6e2062792030", + "0x400080007ffe7fff", + "0x48127fdd7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x482480017ffa8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x1", + "0x480080007ffc8005", + "0x480080017ffb8005", + "0x4824800180047ffe", + "0x1", + "0x48307ffd7ffe7ffb", + "0x480080027ff87ffd", + "0xa0680017fff7ffd", + "0x6", + "0x482480017ff87ffd", + "0xffffffffffffffff0000000000000000", + "0x10780017fff7fff", + "0x4", + "0x482480017fff7ffd", + "0xffffffffffffffff0000000000000000", + "0x400080037ff57ffc", + "0x40507ffe7ff77ffd", + "0x40307fff7ffd7ff8", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x8000", + "0x40780017fff7fff", + "0x2", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x480080047ff08001", + "0x480080057fef7ffe", + "0x400080067fee7ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7ff8", + "0x48507ff97ffc8000", + "0x48507ff87ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x480080077fea8001", + "0x480080087fe97fff", + "0x400080097fe87ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x4800800a7fe47fff", + "0x4800800b7fe37ffd", + "0x4000800c7fe27ff0", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307ff07ffe7fff", + "0x40307ffc7ff77fef", + "0x482480017fe28000", + "0xd", + "0x20680017fff7fee", + "0x15", + "0x400280007ffb7fea", + "0x400280017ffb7fef", + "0x40780017fff7fff", + "0x1", + "0x48127fd47fff8000", + "0x48127fd67fff8000", + "0x48127fd87fff8000", "0x400080007ffc7ffd", "0x400080017ffc7ffe", "0x400080027ffc7fff", - "0x48127ffa7fff8000", + "0x48127ffb7fff8000", + "0x482680017ffb8000", + "0x5", "0x480680017fff8000", "0x0", - "0x48127ffa7fff8000", - "0x482480017ff98000", + "0x48127ff97fff8000", + "0x482480017ff88000", "0x3", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0x4", + "0x2", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x753132385f6d756c204f766572666c6f77", + "0x400080007ffe7fff", + "0x48127ffb7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffb7fff8000", + "0x482480017ffa8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x21", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x7533325f616464204f766572666c6f77", "0x400080007ffe7fff", - "0x482480017fe78000", + "0x482480017fca8000", "0x4", + "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", - "0x48127ffc7fff8000", - "0x482480017ffb8000", + "0x48127ffb7fff8000", + "0x482480017ffa8000", "0x1", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0x7", + "0x24", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x7533325f6d756c204f766572666c6f77", "0x400080007ffe7fff", - "0x482480017fe78000", + "0x482480017fca8000", "0x3", + "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", - "0x48127ffc7fff8000", - "0x482480017ffb8000", + "0x48127ffb7fff8000", + "0x482480017ffa8000", "0x1", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0xa", + "0x27", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x7533325f6d756c204f766572666c6f77", "0x400080007ffe7fff", - "0x482480017fe78000", + "0x482480017fca8000", "0x2", + "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", - "0x48127ffc7fff8000", - "0x482480017ffb8000", + "0x48127ffb7fff8000", + "0x482480017ffa8000", "0x1", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0xd", + "0x2a", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x7533325f6d756c204f766572666c6f77", "0x400080007ffe7fff", - "0x482480017fe78000", + "0x482480017fca8000", "0x1", + "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", - "0x48127ffc7fff8000", - "0x482480017ffb8000", + "0x48127ffb7fff8000", + "0x482480017ffa8000", "0x1", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0x10", + "0x2d", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x4f7074696f6e3a3a756e77726170206661696c65642e", "0x400080007ffe7fff", - "0x48127fe77fff8000", + "0x48127fca7fff8000", + "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", - "0x48127ffc7fff8000", - "0x482480017ffb8000", + "0x48127ffb7fff8000", + "0x482480017ffa8000", "0x1", "0x208b7fff7fff7ffe", "0xa0680017fff8000", @@ -733,15 +849,15 @@ "0x208b7fff7fff7ffe" ], "bytecode_segment_lengths": [ - 202, + 215, 92, - 162, + 265, 66, 206 ], "hints": [ [ - 0, + 2, [ { "TestLessThanOrEqual": { @@ -763,7 +879,7 @@ ] ], [ - 33, + 35, [ { "AllocSegment": { @@ -776,7 +892,7 @@ ] ], [ - 80, + 83, [ { "AllocSegment": { @@ -789,17 +905,20 @@ ] ], [ - 99, + 106, [ { "TestLessThanOrEqual": { "lhs": { - "Immediate": "0x254e" + "Deref": { + "register": "AP", + "offset": -1 + } }, "rhs": { "Deref": { "register": "AP", - "offset": -11 + "offset": -13 } }, "dst": { @@ -811,7 +930,7 @@ ] ], [ - 119, + 126, [ { "AllocSegment": { @@ -824,7 +943,7 @@ ] ], [ - 158, + 168, [ { "AllocSegment": { @@ -837,7 +956,7 @@ ] ], [ - 173, + 184, [ { "AllocSegment": { @@ -850,7 +969,7 @@ ] ], [ - 187, + 199, [ { "AllocSegment": { @@ -863,7 +982,7 @@ ] ], [ - 202, + 215, [ { "TestLessThanOrEqual": { @@ -885,7 +1004,7 @@ ] ], [ - 274, + 287, [ { "AllocSegment": { @@ -898,7 +1017,7 @@ ] ], [ - 302, + 315, [ { "TestLessThan": { @@ -920,7 +1039,7 @@ ] ], [ - 313, + 326, [ { "TestLessThan": { @@ -942,7 +1061,7 @@ ] ], [ - 324, + 337, [ { "TestLessThan": { @@ -964,7 +1083,7 @@ ] ], [ - 334, + 347, [ { "TestLessThan": { @@ -995,7 +1114,191 @@ ] ], [ - 355, + 368, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 387, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 402, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "quotient": { + "register": "AP", + "offset": 5 + }, + "remainder": { + "register": "AP", + "offset": 6 + } + } + } + ] + ], + [ + 408, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 0 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "dst": { + "register": "AP", + "offset": -3 + } + } + } + ] + ], + [ + 423, + [ + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "high": { + "register": "AP", + "offset": 0 + }, + "low": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 425, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -4 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 435, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 0 + }, + "remainder": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 446, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": -1 + }, + "remainder": { + "register": "AP", + "offset": -13 + } + } + } + ] + ], + [ + 461, [ { "AllocSegment": { @@ -1008,7 +1311,7 @@ ] ], [ - 367, + 480, [ { "AllocSegment": { @@ -1021,7 +1324,7 @@ ] ], [ - 384, + 495, [ { "AllocSegment": { @@ -1034,7 +1337,7 @@ ] ], [ - 399, + 511, [ { "AllocSegment": { @@ -1047,7 +1350,7 @@ ] ], [ - 414, + 527, [ { "AllocSegment": { @@ -1060,7 +1363,7 @@ ] ], [ - 429, + 543, [ { "AllocSegment": { @@ -1073,7 +1376,7 @@ ] ], [ - 444, + 559, [ { "AllocSegment": { @@ -1086,7 +1389,7 @@ ] ], [ - 456, + 572, [ { "TestLessThanOrEqual": { @@ -1108,7 +1411,7 @@ ] ], [ - 508, + 624, [ { "AllocSegment": { @@ -1121,7 +1424,7 @@ ] ], [ - 544, + 660, [ { "TestLessThan": { @@ -1149,7 +1452,7 @@ ] ], [ - 548, + 664, [ { "LinearSplit": { @@ -1178,7 +1481,7 @@ ] ], [ - 590, + 706, [ { "TestLessThan": { @@ -1206,7 +1509,7 @@ ] ], [ - 594, + 710, [ { "LinearSplit": { @@ -1235,7 +1538,7 @@ ] ], [ - 636, + 752, [ { "TestLessThan": { @@ -1263,7 +1566,7 @@ ] ], [ - 640, + 756, [ { "LinearSplit": { @@ -1294,175 +1597,223 @@ ], "pythonic_hints": [ [ - 0, + 2, [ "memory[ap + 0] = 0 <= memory[fp + -6]" ] ], [ - 33, + 35, [ "memory[ap + 0] = segments.add()" ] ], [ - 80, + 83, [ "memory[ap + 0] = segments.add()" ] ], [ - 99, + 106, [ - "memory[ap + 0] = 9550 <= memory[ap + -11]" + "memory[ap + 0] = memory[ap + -1] <= memory[ap + -13]" ] ], [ - 119, + 126, [ "memory[ap + 0] = segments.add()" ] ], [ - 158, + 168, [ "memory[ap + 0] = segments.add()" ] ], [ - 173, + 184, [ "memory[ap + 0] = segments.add()" ] ], [ - 187, + 199, [ "memory[ap + 0] = segments.add()" ] ], [ - 202, + 215, [ "memory[ap + 0] = 2370 <= memory[fp + -8]" ] ], [ - 274, + 287, [ "memory[ap + 0] = segments.add()" ] ], [ - 302, + 315, [ "memory[ap + 0] = memory[ap + -1] < 4294967296" ] ], [ - 313, + 326, [ "memory[ap + 0] = memory[ap + -1] < 4294967296" ] ], [ - 324, + 337, [ "memory[ap + 0] = memory[ap + -1] < 4294967296" ] ], [ - 334, + 347, [ "memory[ap + 0] = (memory[ap + -9] + memory[ap + -6]) % PRIME < 4294967296" ] ], [ - 355, + 368, + [ + "memory[ap + 0] = segments.add()" + ] + ], + [ + 387, + [ + "memory[ap + 0] = segments.add()" + ] + ], + [ + 402, + [ + "(memory[ap + 5], memory[ap + 6]) = divmod(memory[ap + -1], memory[ap + -2])" + ] + ], + [ + 408, + [ + "memory[ap + -3] = memory[ap + 0] < 18446744073709551616" + ] + ], + [ + 423, + [ + "(memory[ap + 0], memory[ap + 1]) = divmod(memory[ap + -2] * memory[ap + -1], 2**128)" + ] + ], + [ + 425, + [ + "(memory[ap + 1], memory[ap + 0]) = divmod(memory[ap + -4], 18446744073709551616)" + ] + ], + [ + 435, + [ + "(memory[ap + 0], memory[ap + 1]) = divmod(memory[ap + -1], 18446744073709551616)" + ] + ], + [ + 446, + [ + "(memory[ap + -1], memory[ap + -13]) = divmod(memory[ap + 2], 340282366920938463463374607431768211456)" + ] + ], + [ + 461, [ "memory[ap + 0] = segments.add()" ] ], [ - 367, + 480, [ "memory[ap + 0] = segments.add()" ] ], [ - 384, + 495, [ "memory[ap + 0] = segments.add()" ] ], [ - 399, + 511, [ "memory[ap + 0] = segments.add()" ] ], [ - 414, + 527, [ "memory[ap + 0] = segments.add()" ] ], [ - 429, + 543, [ "memory[ap + 0] = segments.add()" ] ], [ - 444, + 559, [ "memory[ap + 0] = segments.add()" ] ], [ - 456, + 572, [ "memory[ap + 0] = 2270 <= memory[fp + -7]" ] ], [ - 508, + 624, [ "memory[ap + 0] = segments.add()" ] ], [ - 544, + 660, [ "memory[ap + 0] = (memory[ap + -1] + 0) % PRIME < 4294967296" ] ], [ - 548, + 664, [ "\n(value, scalar) = (memory[ap + -1], 10633823966279327296825105735305134080)\nx = min(value // scalar, 340282366920938463463374607431768211454)\ny = value - x * scalar\nmemory[ap + 0] = x\nmemory[ap + 1] = y\n" ] ], [ - 590, + 706, [ "memory[ap + 0] = (memory[ap + -1] + 0) % PRIME < 4294967296" ] ], [ - 594, + 710, [ "\n(value, scalar) = (memory[ap + -1], 10633823966279327296825105735305134080)\nx = min(value // scalar, 340282366920938463463374607431768211454)\ny = value - x * scalar\nmemory[ap + 0] = x\nmemory[ap + 1] = y\n" ] ], [ - 636, + 752, [ "memory[ap + 0] = (memory[ap + -1] + 0) % PRIME < 4294967296" ] ], [ - 640, + 756, [ "\n(value, scalar) = (memory[ap + -1], 10633823966279327296825105735305134080)\nx = min(value // scalar, 340282366920938463463374607431768211454)\ny = value - x * scalar\nmemory[ap + 0] = x\nmemory[ap + 1] = y\n" ] @@ -1474,7 +1825,8 @@ "selector": "0xe2054f8a912367e38a22ce773328ff8aabf8082c4120bad9ef085e1dbf29a7", "offset": 0, "builtins": [ - "range_check" + "range_check", + "bitwise" ] } ], diff --git a/cairo0-bootloader/bootloader/contract/run_contract_bootloader.cairo b/cairo0-bootloader/bootloader/contract/run_contract_bootloader.cairo index daa968a..ab6f093 100644 --- a/cairo0-bootloader/bootloader/contract/run_contract_bootloader.cairo +++ b/cairo0-bootloader/bootloader/contract/run_contract_bootloader.cairo @@ -63,13 +63,6 @@ func run_contract_bootloader{ ); let builtin_ptrs = &local_builtin_ptrs; - %{ print("builtin_ptrs.selectable.pedersen: ", ids.builtin_ptrs.selectable.pedersen) %} - %{ print("builtin_ptrs.selectable.range_check: ", ids.builtin_ptrs.selectable.range_check) %} - %{ print("builtin_ptrs.selectable.ecdsa: ", ids.builtin_ptrs.selectable.ecdsa) %} - %{ print("builtin_ptrs.selectable.bitwise: ", ids.builtin_ptrs.selectable.bitwise) %} - %{ print("builtin_ptrs.selectable.ec_op: ", ids.builtin_ptrs.selectable.ec_op) %} - %{ print("builtin_ptrs.selectable.poseidon: ", ids.builtin_ptrs.selectable.poseidon) %} - local local_builtin_encodings: BuiltinEncodings = BuiltinEncodings( pedersen='pedersen', range_check='range_check', @@ -98,13 +91,15 @@ func run_contract_bootloader{ local calldata: felt*; %{ ids.calldata = segments.add() %} - + assert calldata[0] = 0x3; assert calldata[1] = 0x3; assert calldata[2] = 0x4; assert calldata[3] = 0x5; - local execution_info: ExecutionInfo = ExecutionInfo(selector=0x00e2054f8a912367e38a22ce773328ff8aabf8082c4120bad9ef085e1dbf29a7); + local execution_info: ExecutionInfo = ExecutionInfo( + selector=0x00e2054f8a912367e38a22ce773328ff8aabf8082c4120bad9ef085e1dbf29a7 + ); local execution_context: ExecutionContext = ExecutionContext( entry_point_type=ENTRY_POINT_TYPE_EXTERNAL, @@ -117,5 +112,12 @@ func run_contract_bootloader{ let (retdata_size, retdata) = execute_entry_point(compiled_class, &execution_context); } + let pedersen_ptr = cast(builtin_ptrs.selectable.pedersen, HashBuiltin*); + let ecdsa_ptr = builtin_ptrs.selectable.ecdsa; + let bitwise_ptr = builtin_ptrs.selectable.bitwise; + let ec_op_ptr = builtin_ptrs.selectable.ec_op; + let keccak_ptr = builtin_ptrs.non_selectable.keccak; + let poseidon_ptr = cast(builtin_ptrs.selectable.poseidon, PoseidonBuiltin*); + return (); } diff --git a/cairo0-bootloader/contract_class/compiled_class.cairo b/cairo0-bootloader/contract_class/compiled_class.cairo index eb5f65e..29e3dd5 100644 --- a/cairo0-bootloader/contract_class/compiled_class.cairo +++ b/cairo0-bootloader/contract_class/compiled_class.cairo @@ -412,4 +412,4 @@ func load_compiled_class_facts_inner{poseidon_ptr: PoseidonBuiltin*, range_check compiled_class_facts=compiled_class_facts + CompiledClassFact.SIZE, builtin_costs=builtin_costs, ); -} \ No newline at end of file +} diff --git a/cairo1/Scarb.toml b/cairo1/Scarb.toml deleted file mode 100644 index b0fefe7..0000000 --- a/cairo1/Scarb.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "example" -version = "0.1.0" -edition = "2023_11" - -# See more keys and their definitions at https://docs.swmansion.com/scarb/docs/reference/manifest.html - -[cairo] -enable-gas = false - -[dependencies] diff --git a/cairo1/src/lib.cairo b/cairo1/src/lib.cairo deleted file mode 100644 index 099122e..0000000 --- a/cairo1/src/lib.cairo +++ /dev/null @@ -1,27 +0,0 @@ -#[derive(Drop, Serde)] -struct Input { - a: u32, - b: u32, - c: u32, -} - -#[derive(Drop, Serde)] -struct Output { - a_2: u32, - b_2: u32, - c_2: u32, -} - -fn main(input: Array) -> Array { - let mut input_span = input.span(); - let input = Serde::::deserialize(ref input_span).unwrap(); - - let a_2 = input.a * input.a; - let b_2 = input.b * input.b; - let c_2 = input.c * input.c; - assert(a_2 + b_2 == c_2, 'invalid value'); - - let mut output = array![]; - Output { a_2, b_2, c_2, }.serialize(ref output); - output -} diff --git a/contract/Scarb.toml b/contract/Scarb.toml index 65e57ab..2064302 100644 --- a/contract/Scarb.toml +++ b/contract/Scarb.toml @@ -13,6 +13,8 @@ snforge_std = { git = "https://github.com/foundry-rs/starknet-foundry", tag = "v [[target.starknet-contract]] sierra = true +casm = true +casm-add-pythonic-hints = true [scripts] test = "snforge test"