Add support to import AST via Standard JSON.

This commit is contained in:
Alexander Arlt
2023-06-01 15:12:31 +02:00
parent 11ac5a4efa
commit 5348b9df84
7 changed files with 1095 additions and 4 deletions
@@ -0,0 +1,417 @@
{
"language": "EvmAssemblyJSON",
"sources": {
"A": {
".code": [
{
"begin": 36,
"end": 51,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 33,
"end": 34,
"name": "DUP1",
"source": 0
},
{
"begin": 26,
"end": 52,
"name": "SSTORE",
"source": 0
},
{
"begin": 67,
"end": 80,
"name": "PUSHSIZE",
"source": 0
},
{
"begin": 64,
"end": 65,
"name": "PUSH",
"source": 0,
"value": "1"
},
{
"begin": 57,
"end": 81,
"name": "SSTORE",
"source": 0
},
{
"begin": 96,
"end": 111,
"name": "PUSH [$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 93,
"end": 94,
"name": "PUSH",
"source": 0,
"value": "2"
},
{
"begin": 86,
"end": 112,
"name": "SSTORE",
"source": 0
},
{
"begin": 127,
"end": 140,
"name": "PUSH #[$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 124,
"end": 125,
"name": "PUSH",
"source": 0,
"value": "3"
},
{
"begin": 117,
"end": 141,
"name": "SSTORE",
"source": 0
},
{
"begin": 156,
"end": 173,
"name": "PUSH [$]",
"source": 0,
"value": "000000000000000000000000000000000000000000000000ffffffffffffffff"
},
{
"begin": 153,
"end": 154,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 146,
"end": 174,
"name": "SSTORE",
"source": 0
},
{
"begin": 189,
"end": 204,
"name": "PUSH #[$]",
"source": 0,
"value": "000000000000000000000000000000000000000000000000ffffffffffffffff"
},
{
"begin": 186,
"end": 187,
"name": "PUSH",
"source": 0,
"value": "5"
},
{
"begin": 179,
"end": 205,
"name": "SSTORE",
"source": 0
},
{
"begin": 220,
"end": 237,
"name": "PUSH [$]",
"source": 0,
"value": "000000000000000000000000000000000000000000000000fffffffffffffffe"
},
{
"begin": 217,
"end": 218,
"name": "PUSH",
"source": 0,
"value": "6"
},
{
"begin": 210,
"end": 238,
"name": "SSTORE",
"source": 0
},
{
"begin": 253,
"end": 268,
"name": "PUSH #[$]",
"source": 0,
"value": "000000000000000000000000000000000000000000000000fffffffffffffffe"
},
{
"begin": 250,
"end": 251,
"name": "PUSH",
"source": 0,
"value": "7"
},
{
"begin": 243,
"end": 269,
"name": "SSTORE",
"source": 0
},
{
"begin": 284,
"end": 303,
"name": "PUSH [$]",
"source": 0,
"value": "000000000000000000000000000000000000000000000000fffffffffffffffd"
},
{
"begin": 281,
"end": 282,
"name": "PUSH",
"source": 0,
"value": "8"
},
{
"begin": 274,
"end": 304,
"name": "SSTORE",
"source": 0
},
{
"begin": 319,
"end": 336,
"name": "PUSH #[$]",
"source": 0,
"value": "000000000000000000000000000000000000000000000000fffffffffffffffd"
},
{
"begin": 316,
"end": 317,
"name": "PUSH",
"source": 0,
"value": "9"
},
{
"begin": 309,
"end": 337,
"name": "SSTORE",
"source": 0
}
],
".data": {
"0": {
".code": [
{
"begin": 418,
"end": 433,
"name": "PUSH [$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 414,
"end": 416,
"name": "PUSH",
"source": 0,
"value": "A"
},
{
"begin": 407,
"end": 434,
"name": "SSTORE",
"source": 0
},
{
"begin": 452,
"end": 465,
"name": "PUSH #[$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 448,
"end": 450,
"name": "PUSH",
"source": 0,
"value": "B"
},
{
"begin": 441,
"end": 466,
"name": "SSTORE",
"source": 0
},
{
"begin": 484,
"end": 499,
"name": "PUSH [$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000001"
},
{
"begin": 480,
"end": 482,
"name": "PUSH",
"source": 0,
"value": "C"
},
{
"begin": 473,
"end": 500,
"name": "SSTORE",
"source": 0
},
{
"begin": 518,
"end": 531,
"name": "PUSH #[$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000001"
},
{
"begin": 514,
"end": 516,
"name": "PUSH",
"source": 0,
"value": "D"
},
{
"begin": 507,
"end": 532,
"name": "SSTORE",
"source": 0
},
{
"begin": 550,
"end": 567,
"name": "PUSH [$]",
"source": 0,
"value": "000000000000000000000000000000000000000000000000ffffffffffffffff"
},
{
"begin": 546,
"end": 548,
"name": "PUSH",
"source": 0,
"value": "E"
},
{
"begin": 539,
"end": 568,
"name": "SSTORE",
"source": 0
},
{
"begin": 586,
"end": 601,
"name": "PUSH #[$]",
"source": 0,
"value": "000000000000000000000000000000000000000000000000ffffffffffffffff"
},
{
"begin": 582,
"end": 584,
"name": "PUSH",
"source": 0,
"value": "F"
},
{
"begin": 575,
"end": 602,
"name": "SSTORE",
"source": 0
}
],
".data": {
"0": {
".code": [
{
"begin": 658,
"end": 673,
"name": "PUSH [$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 654,
"end": 656,
"name": "PUSH",
"source": 0,
"value": "10"
},
{
"begin": 647,
"end": 674,
"name": "SSTORE",
"source": 0
},
{
"begin": 694,
"end": 707,
"name": "PUSH #[$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 690,
"end": 692,
"name": "PUSH",
"source": 0,
"value": "11"
},
{
"begin": 683,
"end": 708,
"name": "SSTORE",
"source": 0
}
],
".data": {
"0": {
".code": [
{
"begin": 761,
"end": 770,
"name": "INVALID",
"source": 0
}
]
}
}
},
"1": {
".code": [
{
"begin": 833,
"end": 842,
"name": "INVALID",
"source": 0
}
]
}
}
},
"ACAF3289D7B601CBD114FB36C4D29C85BBFD5E133F14CB355C3FD8D99367964F": "48656c6c6f2c20576f726c6421"
},
"sourceList": [
"<stdin>"
]
}
},
"settings": {
"outputSelection": {
"*": {
"": [
"evm.assembly",
"evm.legacyAssembly",
"evm.bytecode",
"evm.deployedBytecode"
]
}
}
}
}
@@ -0,0 +1,575 @@
{
"contracts":
{
"A":
{
"":
{
"evm":
{
"assembly": " /* \"<stdin>\":36:51 */
0x00
/* \"<stdin>\":33:34 */
dup1
/* \"<stdin>\":26:52 */
sstore
/* \"<stdin>\":67:80 */
bytecodeSize
/* \"<stdin>\":64:65 */
0x01
/* \"<stdin>\":57:81 */
sstore
/* \"<stdin>\":96:111 */
dataOffset(sub_0)
/* \"<stdin>\":93:94 */
0x02
/* \"<stdin>\":86:112 */
sstore
/* \"<stdin>\":127:140 */
dataSize(sub_0)
/* \"<stdin>\":124:125 */
0x03
/* \"<stdin>\":117:141 */
sstore
/* \"<stdin>\":156:173 */
dataOffset(sub_0.sub_0)
/* \"<stdin>\":153:154 */
0x04
/* \"<stdin>\":146:174 */
sstore
/* \"<stdin>\":189:204 */
dataSize(sub_0.sub_0)
/* \"<stdin>\":186:187 */
0x05
/* \"<stdin>\":179:205 */
sstore
/* \"<stdin>\":220:237 */
dataOffset(sub_0.sub_0.sub_0)
/* \"<stdin>\":217:218 */
0x06
/* \"<stdin>\":210:238 */
sstore
/* \"<stdin>\":253:268 */
dataSize(sub_0.sub_0.sub_0)
/* \"<stdin>\":250:251 */
0x07
/* \"<stdin>\":243:269 */
sstore
/* \"<stdin>\":284:303 */
dataOffset(sub_0.sub_1)
/* \"<stdin>\":281:282 */
0x08
/* \"<stdin>\":274:304 */
sstore
/* \"<stdin>\":319:336 */
dataSize(sub_0.sub_1)
/* \"<stdin>\":316:317 */
0x09
/* \"<stdin>\":309:337 */
sstore
stop
data_acaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f 48656c6c6f2c20576f726c6421
sub_0: assembly {
/* \"<stdin>\":418:433 */
dataOffset(sub_0)
/* \"<stdin>\":414:416 */
0x0a
/* \"<stdin>\":407:434 */
sstore
/* \"<stdin>\":452:465 */
dataSize(sub_0)
/* \"<stdin>\":448:450 */
0x0b
/* \"<stdin>\":441:466 */
sstore
/* \"<stdin>\":484:499 */
dataOffset(sub_1)
/* \"<stdin>\":480:482 */
0x0c
/* \"<stdin>\":473:500 */
sstore
/* \"<stdin>\":518:531 */
dataSize(sub_1)
/* \"<stdin>\":514:516 */
0x0d
/* \"<stdin>\":507:532 */
sstore
/* \"<stdin>\":550:567 */
dataOffset(sub_0.sub_0)
/* \"<stdin>\":546:548 */
0x0e
/* \"<stdin>\":539:568 */
sstore
/* \"<stdin>\":586:601 */
dataSize(sub_0.sub_0)
/* \"<stdin>\":582:584 */
0x0f
/* \"<stdin>\":575:602 */
sstore
stop
sub_0: assembly {
/* \"<stdin>\":658:673 */
dataOffset(sub_0)
/* \"<stdin>\":654:656 */
0x10
/* \"<stdin>\":647:674 */
sstore
/* \"<stdin>\":694:707 */
dataSize(sub_0)
/* \"<stdin>\":690:692 */
0x11
/* \"<stdin>\":683:708 */
sstore
stop
sub_0: assembly {
/* \"<stdin>\":761:770 */
invalid
}
}
sub_1: assembly {
/* \"<stdin>\":833:842 */
invalid
}
}
",
"bytecode":
{
"functionDebugData": {},
"linkReferences": {},
"object": "<BYTECODE REMOVED>",
"opcodes":"<OPCODES REMOVED>",
"sourceMap":"<SOURCEMAP REMOVED>"
},
"deployedBytecode":
{
"functionDebugData": {},
"immutableReferences": {},
"linkReferences": {},
"object": "<BYTECODE REMOVED>",
"opcodes":"<OPCODES REMOVED>",
"sourceMap":"<SOURCEMAP REMOVED>"
},
"legacyAssembly":
{
".code":
[
{
"begin": 36,
"end": 51,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 33,
"end": 34,
"name": "DUP1",
"source": 0
},
{
"begin": 26,
"end": 52,
"name": "SSTORE",
"source": 0
},
{
"begin": 67,
"end": 80,
"name": "PUSHSIZE",
"source": 0
},
{
"begin": 64,
"end": 65,
"name": "PUSH",
"source": 0,
"value": "1"
},
{
"begin": 57,
"end": 81,
"name": "SSTORE",
"source": 0
},
{
"begin": 96,
"end": 111,
"name": "PUSH [$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 93,
"end": 94,
"name": "PUSH",
"source": 0,
"value": "2"
},
{
"begin": 86,
"end": 112,
"name": "SSTORE",
"source": 0
},
{
"begin": 127,
"end": 140,
"name": "PUSH #[$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 124,
"end": 125,
"name": "PUSH",
"source": 0,
"value": "3"
},
{
"begin": 117,
"end": 141,
"name": "SSTORE",
"source": 0
},
{
"begin": 156,
"end": 173,
"name": "PUSH [$]",
"source": 0,
"value": "000000000000000000000000000000000000000000000000ffffffffffffffff"
},
{
"begin": 153,
"end": 154,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 146,
"end": 174,
"name": "SSTORE",
"source": 0
},
{
"begin": 189,
"end": 204,
"name": "PUSH #[$]",
"source": 0,
"value": "000000000000000000000000000000000000000000000000ffffffffffffffff"
},
{
"begin": 186,
"end": 187,
"name": "PUSH",
"source": 0,
"value": "5"
},
{
"begin": 179,
"end": 205,
"name": "SSTORE",
"source": 0
},
{
"begin": 220,
"end": 237,
"name": "PUSH [$]",
"source": 0,
"value": "000000000000000000000000000000000000000000000000fffffffffffffffe"
},
{
"begin": 217,
"end": 218,
"name": "PUSH",
"source": 0,
"value": "6"
},
{
"begin": 210,
"end": 238,
"name": "SSTORE",
"source": 0
},
{
"begin": 253,
"end": 268,
"name": "PUSH #[$]",
"source": 0,
"value": "000000000000000000000000000000000000000000000000fffffffffffffffe"
},
{
"begin": 250,
"end": 251,
"name": "PUSH",
"source": 0,
"value": "7"
},
{
"begin": 243,
"end": 269,
"name": "SSTORE",
"source": 0
},
{
"begin": 284,
"end": 303,
"name": "PUSH [$]",
"source": 0,
"value": "000000000000000000000000000000000000000000000000fffffffffffffffd"
},
{
"begin": 281,
"end": 282,
"name": "PUSH",
"source": 0,
"value": "8"
},
{
"begin": 274,
"end": 304,
"name": "SSTORE",
"source": 0
},
{
"begin": 319,
"end": 336,
"name": "PUSH #[$]",
"source": 0,
"value": "000000000000000000000000000000000000000000000000fffffffffffffffd"
},
{
"begin": 316,
"end": 317,
"name": "PUSH",
"source": 0,
"value": "9"
},
{
"begin": 309,
"end": 337,
"name": "SSTORE",
"source": 0
}
],
".data":
{
"0":
{
".code":
[
{
"begin": 418,
"end": 433,
"name": "PUSH [$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 414,
"end": 416,
"name": "PUSH",
"source": 0,
"value": "A"
},
{
"begin": 407,
"end": 434,
"name": "SSTORE",
"source": 0
},
{
"begin": 452,
"end": 465,
"name": "PUSH #[$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 448,
"end": 450,
"name": "PUSH",
"source": 0,
"value": "B"
},
{
"begin": 441,
"end": 466,
"name": "SSTORE",
"source": 0
},
{
"begin": 484,
"end": 499,
"name": "PUSH [$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000001"
},
{
"begin": 480,
"end": 482,
"name": "PUSH",
"source": 0,
"value": "C"
},
{
"begin": 473,
"end": 500,
"name": "SSTORE",
"source": 0
},
{
"begin": 518,
"end": 531,
"name": "PUSH #[$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000001"
},
{
"begin": 514,
"end": 516,
"name": "PUSH",
"source": 0,
"value": "D"
},
{
"begin": 507,
"end": 532,
"name": "SSTORE",
"source": 0
},
{
"begin": 550,
"end": 567,
"name": "PUSH [$]",
"source": 0,
"value": "000000000000000000000000000000000000000000000000ffffffffffffffff"
},
{
"begin": 546,
"end": 548,
"name": "PUSH",
"source": 0,
"value": "E"
},
{
"begin": 539,
"end": 568,
"name": "SSTORE",
"source": 0
},
{
"begin": 586,
"end": 601,
"name": "PUSH #[$]",
"source": 0,
"value": "000000000000000000000000000000000000000000000000ffffffffffffffff"
},
{
"begin": 582,
"end": 584,
"name": "PUSH",
"source": 0,
"value": "F"
},
{
"begin": 575,
"end": 602,
"name": "SSTORE",
"source": 0
}
],
".data":
{
"0":
{
".code":
[
{
"begin": 658,
"end": 673,
"name": "PUSH [$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 654,
"end": 656,
"name": "PUSH",
"source": 0,
"value": "10"
},
{
"begin": 647,
"end": 674,
"name": "SSTORE",
"source": 0
},
{
"begin": 694,
"end": 707,
"name": "PUSH #[$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 690,
"end": 692,
"name": "PUSH",
"source": 0,
"value": "11"
},
{
"begin": 683,
"end": 708,
"name": "SSTORE",
"source": 0
}
],
".data":
{
"0":
{
".code":
[
{
"begin": 761,
"end": 770,
"name": "INVALID",
"source": 0
}
]
}
}
},
"1":
{
".code":
[
{
"begin": 833,
"end": 842,
"name": "INVALID",
"source": 0
}
]
}
}
},
"ACAF3289D7B601CBD114FB36C4D29C85BBFD5E133F14CB355C3FD8D99367964F": "48656c6c6f2c20576f726c6421"
},
"sourceList":
[
"<stdin>",
"#utility.yul"
]
}
}
}
}
}
}