From c320a650f940fe96108c4c4687313ef26a33e248 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Wed, 19 Sep 2018 13:13:42 +0100 Subject: LLL: terminate sequences with a STOP --- liblll/CodeFragment.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/liblll/CodeFragment.cpp b/liblll/CodeFragment.cpp index 85480119..60dd0917 100644 --- a/liblll/CodeFragment.cpp +++ b/liblll/CodeFragment.cpp @@ -45,6 +45,10 @@ using namespace dev::lll; void CodeFragment::finalise(CompilerState const& _cs) { + // NOTE: add this as a safeguard in case the user didn't issue an + // explicit stop at the end of the sequence + m_asm.append(Instruction::STOP); + if (_cs.usedAlloc && _cs.vars.size() && !m_finalised) { m_finalised = true; -- cgit v1.2.3 From 280255e64dd918e644d976a7758ef110d2ab76c8 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Wed, 19 Sep 2018 13:37:59 +0100 Subject: LLL: do not wrap opcode tests into sequence --- test/liblll/Compiler.cpp | 478 +++++++++++++++++++++++------------------------ 1 file changed, 239 insertions(+), 239 deletions(-) diff --git a/test/liblll/Compiler.cpp b/test/liblll/Compiler.cpp index a4394f54..5487ccf3 100644 --- a/test/liblll/Compiler.cpp +++ b/test/liblll/Compiler.cpp @@ -253,109 +253,109 @@ BOOST_AUTO_TEST_CASE(valid_opcodes_functional) }; vector opcodes_lll { - "{ (STOP) }", - "{ (ADD 0 0) }", - "{ (MUL 0 0) }", - "{ (SUB 0 0) }", - "{ (DIV 0 0) }", - "{ (SDIV 0 0) }", - "{ (MOD 0 0) }", - "{ (SMOD 0 0) }", - "{ (ADDMOD 0 0 0) }", - "{ (MULMOD 0 0 0) }", - "{ (EXP 0 0) }", - "{ (SIGNEXTEND 0 0) }", - "{ (LT 0 0) }", - "{ (GT 0 0) }", - "{ (SLT 0 0) }", - "{ (SGT 0 0) }", - "{ (EQ 0 0) }", - "{ (ISZERO 0) }", - "{ (AND 0 0) }", - "{ (OR 0 0) }", - "{ (XOR 0 0) }", - "{ (NOT 0) }", - "{ (BYTE 0 0) }", - "{ (KECCAK256 0 0) }", - "{ (ADDRESS) }", - "{ (BALANCE 0) }", - "{ (ORIGIN) }", - "{ (CALLER) }", - "{ (CALLVALUE) }", - "{ (CALLDATALOAD 0) }", - "{ (CALLDATASIZE) }", - "{ (CALLDATACOPY 0 0 0) }", - "{ (CODESIZE) }", - "{ (CODECOPY 0 0 0) }", - "{ (GASPRICE) }", - "{ (EXTCODESIZE 0) }", - "{ (EXTCODECOPY 0 0 0 0) }", - "{ (RETURNDATASIZE) }", - "{ (RETURNDATACOPY 0 0 0) }", - "{ (EXTCODEHASH 0) }", - "{ (BLOCKHASH 0) }", - "{ (COINBASE) }", - "{ (TIMESTAMP) }", - "{ (NUMBER) }", - "{ (DIFFICULTY) }", - "{ (GASLIMIT) }", - "{ (POP 0) }", - "{ (MLOAD 0) }", - "{ (MSTORE 0 0) }", - "{ (MSTORE8 0 0) }", - "{ (SLOAD 0) }", - "{ (SSTORE 0 0) }", - "{ (JUMP 0) }", - "{ (JUMPI 0 0) }", - "{ (PC) }", - "{ (MSIZE) }", - "{ (GAS) }", - "{ 0xff }", - "{ 0xffff }", - "{ 0xffffff }", - "{ 0xffffffff }", - "{ 0xffffffffff }", - "{ 0xffffffffffff }", - "{ 0xffffffffffffff }", - "{ 0xffffffffffffffff }", - "{ 0xffffffffffffffffff }", - "{ 0xffffffffffffffffffff }", - "{ 0xffffffffffffffffffffff }", - "{ 0xffffffffffffffffffffffff }", - "{ 0xffffffffffffffffffffffffff }", - "{ 0xffffffffffffffffffffffffffff }", - "{ 0xffffffffffffffffffffffffffffff }", - "{ 0xffffffffffffffffffffffffffffffff }", - "{ 0xffffffffffffffffffffffffffffffffff }", - "{ 0xffffffffffffffffffffffffffffffffffff }", - "{ 0xffffffffffffffffffffffffffffffffffffff }", - "{ 0xffffffffffffffffffffffffffffffffffffffff }", - "{ 0xffffffffffffffffffffffffffffffffffffffffff }", - "{ 0xffffffffffffffffffffffffffffffffffffffffffff }", - "{ 0xffffffffffffffffffffffffffffffffffffffffffffff }", - "{ 0xffffffffffffffffffffffffffffffffffffffffffffffff }", - "{ 0xffffffffffffffffffffffffffffffffffffffffffffffffff }", - "{ 0xffffffffffffffffffffffffffffffffffffffffffffffffffff }", - "{ 0xffffffffffffffffffffffffffffffffffffffffffffffffffffff }", - "{ 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff }", - "{ 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff }", - "{ 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff }", - "{ 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff }", - "{ 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff }", - "{ (LOG0 0 0) }", - "{ (LOG1 0 0 0) }", - "{ (LOG2 0 0 0 0) }", - "{ (LOG3 0 0 0 0 0) }", - "{ (LOG4 0 0 0 0 0 0) }", - "{ (CREATE 0 0 0) }", - "{ (CALL 0 0 0 0 0 0 0) }", - "{ (CALLCODE 0 0 0 0 0 0 0) }", - "{ (RETURN 0 0) }", - "{ (DELEGATECALL 0 0 0 0 0 0) }", - "{ (STATICCALL 0 0 0 0 0 0) }", - "{ (REVERT 0 0) }", - "{ (INVALID) }", - "{ (SELFDESTRUCT 0) }" + "(STOP)", + "(ADD 0 0)", + "(MUL 0 0)", + "(SUB 0 0)", + "(DIV 0 0)", + "(SDIV 0 0)", + "(MOD 0 0)", + "(SMOD 0 0)", + "(ADDMOD 0 0 0)", + "(MULMOD 0 0 0)", + "(EXP 0 0)", + "(SIGNEXTEND 0 0)", + "(LT 0 0)", + "(GT 0 0)", + "(SLT 0 0)", + "(SGT 0 0)", + "(EQ 0 0)", + "(ISZERO 0)", + "(AND 0 0)", + "(OR 0 0)", + "(XOR 0 0)", + "(NOT 0)", + "(BYTE 0 0)", + "(KECCAK256 0 0)", + "(ADDRESS)", + "(BALANCE 0)", + "(ORIGIN)", + "(CALLER)", + "(CALLVALUE)", + "(CALLDATALOAD 0)", + "(CALLDATASIZE)", + "(CALLDATACOPY 0 0 0)", + "(CODESIZE)", + "(CODECOPY 0 0 0)", + "(GASPRICE)", + "(EXTCODESIZE 0)", + "(EXTCODECOPY 0 0 0 0)", + "(RETURNDATASIZE)", + "(RETURNDATACOPY 0 0 0)", + "(EXTCODEHASH 0)", + "(BLOCKHASH 0)", + "(COINBASE)", + "(TIMESTAMP)", + "(NUMBER)", + "(DIFFICULTY)", + "(GASLIMIT)", + "(POP 0)", + "(MLOAD 0)", + "(MSTORE 0 0)", + "(MSTORE8 0 0)", + "(SLOAD 0)", + "(SSTORE 0 0)", + "(JUMP 0)", + "(JUMPI 0 0)", + "(PC)", + "(MSIZE)", + "(GAS)", + "0xff", + "0xffff", + "0xffffff", + "0xffffffff", + "0xffffffffff", + "0xffffffffffff", + "0xffffffffffffff", + "0xffffffffffffffff", + "0xffffffffffffffffff", + "0xffffffffffffffffffff", + "0xffffffffffffffffffffff", + "0xffffffffffffffffffffffff", + "0xffffffffffffffffffffffffff", + "0xffffffffffffffffffffffffffff", + "0xffffffffffffffffffffffffffffff", + "0xffffffffffffffffffffffffffffffff", + "0xffffffffffffffffffffffffffffffffff", + "0xffffffffffffffffffffffffffffffffffff", + "0xffffffffffffffffffffffffffffffffffffff", + "0xffffffffffffffffffffffffffffffffffffffff", + "0xffffffffffffffffffffffffffffffffffffffffff", + "0xffffffffffffffffffffffffffffffffffffffffffff", + "0xffffffffffffffffffffffffffffffffffffffffffffff", + "0xffffffffffffffffffffffffffffffffffffffffffffffff", + "0xffffffffffffffffffffffffffffffffffffffffffffffffff", + "0xffffffffffffffffffffffffffffffffffffffffffffffffffff", + "0xffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "(LOG0 0 0)", + "(LOG1 0 0 0)", + "(LOG2 0 0 0 0)", + "(LOG3 0 0 0 0 0)", + "(LOG4 0 0 0 0 0 0)", + "(CREATE 0 0 0)", + "(CALL 0 0 0 0 0 0 0)", + "(CALLCODE 0 0 0 0 0 0 0)", + "(RETURN 0 0)", + "(DELEGATECALL 0 0 0 0 0 0)", + "(STATICCALL 0 0 0 0 0 0)", + "(REVERT 0 0)", + "(INVALID)", + "(SELFDESTRUCT 0)" }; for (size_t i = 0; i < opcodes_bytecode.size(); i++) @@ -511,142 +511,142 @@ BOOST_AUTO_TEST_CASE(valid_opcodes_asm) }; vector opcodes_lll { - "{ (asm STOP) }", - "{ (asm ADD) }", - "{ (asm MUL) }", - "{ (asm SUB) }", - "{ (asm DIV) }", - "{ (asm SDIV ) }", - "{ (asm MOD) }", - "{ (asm SMOD) }", - "{ (asm ADDMOD) }", - "{ (asm MULMOD) }", - "{ (asm EXP) }", - "{ (asm SIGNEXTEND) }", - "{ (asm LT) }", - "{ (asm GT) }", - "{ (asm SLT) }", - "{ (asm SGT) }", - "{ (asm EQ) }", - "{ (asm ISZERO) }", - "{ (asm AND) }", - "{ (asm OR) }", - "{ (asm XOR) }", - "{ (asm NOT) }", - "{ (asm BYTE) }", - "{ (asm KECCAK256) }", - "{ (asm ADDRESS) }", - "{ (asm BALANCE) }", - "{ (asm ORIGIN) }", - "{ (asm CALLER) }", - "{ (asm CALLVALUE) }", - "{ (asm CALLDATALOAD) }", - "{ (asm CALLDATASIZE) }", - "{ (asm CALLDATACOPY) }", - "{ (asm CODESIZE) }", - "{ (asm CODECOPY) }", - "{ (asm GASPRICE) }", - "{ (asm EXTCODESIZE)}", - "{ (asm EXTCODECOPY) }", - "{ (asm RETURNDATASIZE) }", - "{ (asm RETURNDATACOPY) }", - "{ (asm EXTCODEHASH) }", - "{ (asm BLOCKHASH) }", - "{ (asm COINBASE) }", - "{ (asm TIMESTAMP) }", - "{ (asm NUMBER) }", - "{ (asm DIFFICULTY) }", - "{ (asm GASLIMIT) }", - "{ (asm POP) }", - "{ (asm MLOAD) }", - "{ (asm MSTORE) }", - "{ (asm MSTORE8) }", - "{ (asm SLOAD) }", - "{ (asm SSTORE) }", - "{ (asm JUMP ) }", - "{ (asm JUMPI ) }", - "{ (asm PC) }", - "{ (asm MSIZE) }", - "{ (asm GAS) }", - "{ (asm JUMPDEST) }", - "{ (asm 0xff) }", - "{ (asm 0xffff) }", - "{ (asm 0xffffff) }", - "{ (asm 0xffffffff) }", - "{ (asm 0xffffffffff) }", - "{ (asm 0xffffffffffff) }", - "{ (asm 0xffffffffffffff) }", - "{ (asm 0xffffffffffffffff) }", - "{ (asm 0xffffffffffffffffff) }", - "{ (asm 0xffffffffffffffffffff) }", - "{ (asm 0xffffffffffffffffffffff) }", - "{ (asm 0xffffffffffffffffffffffff) }", - "{ (asm 0xffffffffffffffffffffffffff) }", - "{ (asm 0xffffffffffffffffffffffffffff) }", - "{ (asm 0xffffffffffffffffffffffffffffff) }", - "{ (asm 0xffffffffffffffffffffffffffffffff) }", - "{ (asm 0xffffffffffffffffffffffffffffffffff) }", - "{ (asm 0xffffffffffffffffffffffffffffffffffff) }", - "{ (asm 0xffffffffffffffffffffffffffffffffffffff) }", - "{ (asm 0xffffffffffffffffffffffffffffffffffffffff) }", - "{ (asm 0xffffffffffffffffffffffffffffffffffffffffff) }", - "{ (asm 0xffffffffffffffffffffffffffffffffffffffffffff) }", - "{ (asm 0xffffffffffffffffffffffffffffffffffffffffffffff) }", - "{ (asm 0xffffffffffffffffffffffffffffffffffffffffffffffff) }", - "{ (asm 0xffffffffffffffffffffffffffffffffffffffffffffffffff) }", - "{ (asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffff) }", - "{ (asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffff) }", - "{ (asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff) }", - "{ (asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) }", - "{ (asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) }", - "{ (asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) }", - "{ (asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) }", - "{ (asm DUP1) }", - "{ (asm DUP2) }", - "{ (asm DUP3) }", - "{ (asm DUP4) }", - "{ (asm DUP5) }", - "{ (asm DUP6) }", - "{ (asm DUP7) }", - "{ (asm DUP8) }", - "{ (asm DUP9) }", - "{ (asm DUP10) }", - "{ (asm DUP11) }", - "{ (asm DUP12) }", - "{ (asm DUP13) }", - "{ (asm DUP14) }", - "{ (asm DUP15) }", - "{ (asm DUP16) }", - "{ (asm SWAP1) }", - "{ (asm SWAP2) }", - "{ (asm SWAP3) }", - "{ (asm SWAP4) }", - "{ (asm SWAP5) }", - "{ (asm SWAP6) }", - "{ (asm SWAP7) }", - "{ (asm SWAP8) }", - "{ (asm SWAP9) }", - "{ (asm SWAP10) }", - "{ (asm SWAP11) }", - "{ (asm SWAP12) }", - "{ (asm SWAP13) }", - "{ (asm SWAP14) }", - "{ (asm SWAP15) }", - "{ (asm SWAP16) }", - "{ (asm LOG0) }", - "{ (asm LOG1) }", - "{ (asm LOG2) }", - "{ (asm LOG3) }", - "{ (asm LOG4) }", - "{ (asm CREATE) }", - "{ (asm CALL) }", - "{ (asm CALLCODE) }", - "{ (asm RETURN) }", - "{ (asm DELEGATECALL) }", - "{ (asm STATICCALL) }", - "{ (asm REVERT) }", - "{ (asm INVALID) }", - "{ (asm SELFDESTRUCT) }" + "(asm STOP)", + "(asm ADD)", + "(asm MUL)", + "(asm SUB)", + "(asm DIV)", + "(asm SDIV )", + "(asm MOD)", + "(asm SMOD)", + "(asm ADDMOD)", + "(asm MULMOD)", + "(asm EXP)", + "(asm SIGNEXTEND)", + "(asm LT)", + "(asm GT)", + "(asm SLT)", + "(asm SGT)", + "(asm EQ)", + "(asm ISZERO)", + "(asm AND)", + "(asm OR)", + "(asm XOR)", + "(asm NOT)", + "(asm BYTE)", + "(asm KECCAK256)", + "(asm ADDRESS)", + "(asm BALANCE)", + "(asm ORIGIN)", + "(asm CALLER)", + "(asm CALLVALUE)", + "(asm CALLDATALOAD)", + "(asm CALLDATASIZE)", + "(asm CALLDATACOPY)", + "(asm CODESIZE)", + "(asm CODECOPY)", + "(asm GASPRICE)", + "(asm EXTCODESIZE)}", + "(asm EXTCODECOPY)", + "(asm RETURNDATASIZE)", + "(asm RETURNDATACOPY)", + "(asm EXTCODEHASH)", + "(asm BLOCKHASH)", + "(asm COINBASE)", + "(asm TIMESTAMP)", + "(asm NUMBER)", + "(asm DIFFICULTY)", + "(asm GASLIMIT)", + "(asm POP)", + "(asm MLOAD)", + "(asm MSTORE)", + "(asm MSTORE8)", + "(asm SLOAD)", + "(asm SSTORE)", + "(asm JUMP )", + "(asm JUMPI )", + "(asm PC)", + "(asm MSIZE)", + "(asm GAS)", + "(asm JUMPDEST)", + "(asm 0xff)", + "(asm 0xffff)", + "(asm 0xffffff)", + "(asm 0xffffffff)", + "(asm 0xffffffffff)", + "(asm 0xffffffffffff)", + "(asm 0xffffffffffffff)", + "(asm 0xffffffffffffffff)", + "(asm 0xffffffffffffffffff)", + "(asm 0xffffffffffffffffffff)", + "(asm 0xffffffffffffffffffffff)", + "(asm 0xffffffffffffffffffffffff)", + "(asm 0xffffffffffffffffffffffffff)", + "(asm 0xffffffffffffffffffffffffffff)", + "(asm 0xffffffffffffffffffffffffffffff)", + "(asm 0xffffffffffffffffffffffffffffffff)", + "(asm 0xffffffffffffffffffffffffffffffffff)", + "(asm 0xffffffffffffffffffffffffffffffffffff)", + "(asm 0xffffffffffffffffffffffffffffffffffffff)", + "(asm 0xffffffffffffffffffffffffffffffffffffffff)", + "(asm 0xffffffffffffffffffffffffffffffffffffffffff)", + "(asm 0xffffffffffffffffffffffffffffffffffffffffffff)", + "(asm 0xffffffffffffffffffffffffffffffffffffffffffffff)", + "(asm 0xffffffffffffffffffffffffffffffffffffffffffffffff)", + "(asm 0xffffffffffffffffffffffffffffffffffffffffffffffffff)", + "(asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffff)", + "(asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffff)", + "(asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff)", + "(asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)", + "(asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)", + "(asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)", + "(asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)", + "(asm DUP1)", + "(asm DUP2)", + "(asm DUP3)", + "(asm DUP4)", + "(asm DUP5)", + "(asm DUP6)", + "(asm DUP7)", + "(asm DUP8)", + "(asm DUP9)", + "(asm DUP10)", + "(asm DUP11)", + "(asm DUP12)", + "(asm DUP13)", + "(asm DUP14)", + "(asm DUP15)", + "(asm DUP16)", + "(asm SWAP1)", + "(asm SWAP2)", + "(asm SWAP3)", + "(asm SWAP4)", + "(asm SWAP5)", + "(asm SWAP6)", + "(asm SWAP7)", + "(asm SWAP8)", + "(asm SWAP9)", + "(asm SWAP10)", + "(asm SWAP11)", + "(asm SWAP12)", + "(asm SWAP13)", + "(asm SWAP14)", + "(asm SWAP15)", + "(asm SWAP16)", + "(asm LOG0)", + "(asm LOG1)", + "(asm LOG2)", + "(asm LOG3)", + "(asm LOG4)", + "(asm CREATE)", + "(asm CALL)", + "(asm CALLCODE)", + "(asm RETURN)", + "(asm DELEGATECALL)", + "(asm STATICCALL)", + "(asm REVERT)", + "(asm INVALID)", + "(asm SELFDESTRUCT)" }; for (size_t i = 0; i < opcodes_bytecode.size(); i++) -- cgit v1.2.3 From d2e65a3ac4b74bbc2666a6b5e59fcf18c7d357ac Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Wed, 19 Sep 2018 17:29:01 +0100 Subject: LLL bytecode is padded by STOP in tests --- test/liblll/Compiler.cpp | 478 +++++++++++++++++++++++------------------------ 1 file changed, 239 insertions(+), 239 deletions(-) diff --git a/test/liblll/Compiler.cpp b/test/liblll/Compiler.cpp index 5487ccf3..4d29b019 100644 --- a/test/liblll/Compiler.cpp +++ b/test/liblll/Compiler.cpp @@ -147,109 +147,109 @@ BOOST_AUTO_TEST_CASE(disallowed_functional_asm_instructions) BOOST_AUTO_TEST_CASE(valid_opcodes_functional) { vector opcodes_bytecode { - "00", - "6000600001", - "6000600002", - "6000600003", - "6000600004", - "6000600005", - "6000600006", - "6000600007", - "60006000600008", - "60006000600009", - "600060000a", - "600060000b", - "6000600010", - "6000600011", - "6000600012", - "6000600013", - "6000600014", - "600015", - "6000600016", - "6000600017", - "6000600018", - "600019", - "600060001a", - "6000600020", - "30", - "600031", - "32", - "33", - "34", - "600035", - "36", - "60006000600037", - "38", - "60006000600039", - "3a", - "60003b", - "60006000600060003c", - "3d", - "6000600060003e", - "60003f", - "600040", - "41", - "42", - "43", - "44", - "45", - "600050", - "600051", - "6000600052", - "6000600053", - "600054", - "6000600055", - "600056", - "6000600057", - "58", - "59", - "5a", - "60ff", - "61ffff", - "62ffffff", - "63ffffffff", - "64ffffffffff", - "65ffffffffffff", - "66ffffffffffffff", - "67ffffffffffffffff", - "68ffffffffffffffffff", - "69ffffffffffffffffffff", - "6affffffffffffffffffffff", - "6bffffffffffffffffffffffff", - "6cffffffffffffffffffffffffff", - "6dffffffffffffffffffffffffffff", - "6effffffffffffffffffffffffffffff", - "6fffffffffffffffffffffffffffffffff", - "70ffffffffffffffffffffffffffffffffff", - "71ffffffffffffffffffffffffffffffffffff", - "72ffffffffffffffffffffffffffffffffffffff", - "73ffffffffffffffffffffffffffffffffffffffff", - "74ffffffffffffffffffffffffffffffffffffffffff", - "75ffffffffffffffffffffffffffffffffffffffffffff", - "76ffffffffffffffffffffffffffffffffffffffffffffff", - "77ffffffffffffffffffffffffffffffffffffffffffffffff", - "78ffffffffffffffffffffffffffffffffffffffffffffffffff", - "79ffffffffffffffffffffffffffffffffffffffffffffffffffff", - "7affffffffffffffffffffffffffffffffffffffffffffffffffffff", - "7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "7cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "60006000a0", - "600060006000a1", - "6000600060006000a2", - "60006000600060006000a3", - "600060006000600060006000a4", - "600060006000f0", - "6000600060006000600060006000f1", - "6000600060006000600060006000f2", - "60006000f3", - "600060006000600060006000f4", - "600060006000600060006000fa", - "60006000fd", - "fe", - "6000ff" + "0000", + "600060000100", + "600060000200", + "600060000300", + "600060000400", + "600060000500", + "600060000600", + "600060000700", + "6000600060000800", + "6000600060000900", + "600060000a00", + "600060000b00", + "600060001000", + "600060001100", + "600060001200", + "600060001300", + "600060001400", + "60001500", + "600060001600", + "600060001700", + "600060001800", + "60001900", + "600060001a00", + "600060002000", + "3000", + "60003100", + "3200", + "3300", + "3400", + "60003500", + "3600", + "6000600060003700", + "3800", + "6000600060003900", + "3a00", + "60003b00", + "60006000600060003c00", + "3d00", + "6000600060003e00", + "60003f00", + "60004000", + "4100", + "4200", + "4300", + "4400", + "4500", + "60005000", + "60005100", + "600060005200", + "600060005300", + "60005400", + "600060005500", + "60005600", + "600060005700", + "5800", + "5900", + "5a00", + "60ff00", + "61ffff00", + "62ffffff00", + "63ffffffff00", + "64ffffffffff00", + "65ffffffffffff00", + "66ffffffffffffff00", + "67ffffffffffffffff00", + "68ffffffffffffffffff00", + "69ffffffffffffffffffff00", + "6affffffffffffffffffffff00", + "6bffffffffffffffffffffffff00", + "6cffffffffffffffffffffffffff00", + "6dffffffffffffffffffffffffffff00", + "6effffffffffffffffffffffffffffff00", + "6fffffffffffffffffffffffffffffffff00", + "70ffffffffffffffffffffffffffffffffff00", + "71ffffffffffffffffffffffffffffffffffff00", + "72ffffffffffffffffffffffffffffffffffffff00", + "73ffffffffffffffffffffffffffffffffffffffff00", + "74ffffffffffffffffffffffffffffffffffffffffff00", + "75ffffffffffffffffffffffffffffffffffffffffffff00", + "76ffffffffffffffffffffffffffffffffffffffffffffff00", + "77ffffffffffffffffffffffffffffffffffffffffffffffff00", + "78ffffffffffffffffffffffffffffffffffffffffffffffffff00", + "79ffffffffffffffffffffffffffffffffffffffffffffffffffff00", + "7affffffffffffffffffffffffffffffffffffffffffffffffffffff00", + "7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", + "7cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", + "7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", + "7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", + "7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", + "60006000a000", + "600060006000a100", + "6000600060006000a200", + "60006000600060006000a300", + "600060006000600060006000a400", + "600060006000f000", + "6000600060006000600060006000f100", + "6000600060006000600060006000f200", + "60006000f300", + "600060006000600060006000f400", + "600060006000600060006000fa00", + "60006000fd00", + "fe00", + "6000ff00" }; vector opcodes_lll { @@ -372,142 +372,142 @@ BOOST_AUTO_TEST_CASE(valid_opcodes_functional) BOOST_AUTO_TEST_CASE(valid_opcodes_asm) { vector opcodes_bytecode { - "00", - "01", - "02", - "03", - "04", - "05", - "06", - "07", - "08", - "09", - "0a", - "0b", - "10", - "11", - "12", - "13", - "14", - "15", - "16", - "17", - "18", - "19", - "1a", - "20", - "30", - "31", - "32", - "33", - "34", - "35", - "36", - "37", - "38", - "39", - "3a", - "3b", - "3c", - "3d", - "3e", - "3f", - "40", - "41", - "42", - "43", - "44", - "45", - "50", - "51", - "52", - "53", - "54", - "55", - "56", - "57", - "58", - "59", - "5a", - "5b", - "60ff", - "61ffff", - "62ffffff", - "63ffffffff", - "64ffffffffff", - "65ffffffffffff", - "66ffffffffffffff", - "67ffffffffffffffff", - "68ffffffffffffffffff", - "69ffffffffffffffffffff", - "6affffffffffffffffffffff", - "6bffffffffffffffffffffffff", - "6cffffffffffffffffffffffffff", - "6dffffffffffffffffffffffffffff", - "6effffffffffffffffffffffffffffff", - "6fffffffffffffffffffffffffffffffff", - "70ffffffffffffffffffffffffffffffffff", - "71ffffffffffffffffffffffffffffffffffff", - "72ffffffffffffffffffffffffffffffffffffff", - "73ffffffffffffffffffffffffffffffffffffffff", - "74ffffffffffffffffffffffffffffffffffffffffff", - "75ffffffffffffffffffffffffffffffffffffffffffff", - "76ffffffffffffffffffffffffffffffffffffffffffffff", - "77ffffffffffffffffffffffffffffffffffffffffffffffff", - "78ffffffffffffffffffffffffffffffffffffffffffffffffff", - "79ffffffffffffffffffffffffffffffffffffffffffffffffffff", - "7affffffffffffffffffffffffffffffffffffffffffffffffffffff", - "7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "7cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "80", - "81", - "82", - "83", - "84", - "85", - "86", - "87", - "88", - "89", - "8a", - "8b", - "8c", - "8d", - "8e", - "8f", - "90", - "91", - "92", - "93", - "94", - "95", - "96", - "97", - "98", - "99", - "9a", - "9b", - "9c", - "9d", - "9e", - "9f", - "a0", - "a1", - "a2", - "a3", - "a4", - "f0", - "f1", - "f2", - "f3", - "f4", - "fa", - "fd", - "fe", - "ff" + "0000", + "0100", + "0200", + "0300", + "0400", + "0500", + "0600", + "0700", + "0800", + "0900", + "0a00", + "0b00", + "1000", + "1100", + "1200", + "1300", + "1400", + "1500", + "1600", + "1700", + "1800", + "1900", + "1a00", + "2000", + "3000", + "3100", + "3200", + "3300", + "3400", + "3500", + "3600", + "3700", + "3800", + "3900", + "3a00", + "3b00", + "3c00", + "3d00", + "3e00", + "3f00", + "4000", + "4100", + "4200", + "4300", + "4400", + "4500", + "5000", + "5100", + "5200", + "5300", + "5400", + "5500", + "5600", + "5700", + "5800", + "5900", + "5a00", + "5b00", + "60ff00", + "61ffff00", + "62ffffff00", + "63ffffffff00", + "64ffffffffff00", + "65ffffffffffff00", + "66ffffffffffffff00", + "67ffffffffffffffff00", + "68ffffffffffffffffff00", + "69ffffffffffffffffffff00", + "6affffffffffffffffffffff00", + "6bffffffffffffffffffffffff00", + "6cffffffffffffffffffffffffff00", + "6dffffffffffffffffffffffffffff00", + "6effffffffffffffffffffffffffffff00", + "6fffffffffffffffffffffffffffffffff00", + "70ffffffffffffffffffffffffffffffffff00", + "71ffffffffffffffffffffffffffffffffffff00", + "72ffffffffffffffffffffffffffffffffffffff00", + "73ffffffffffffffffffffffffffffffffffffffff00", + "74ffffffffffffffffffffffffffffffffffffffffff00", + "75ffffffffffffffffffffffffffffffffffffffffffff00", + "76ffffffffffffffffffffffffffffffffffffffffffffff00", + "77ffffffffffffffffffffffffffffffffffffffffffffffff00", + "78ffffffffffffffffffffffffffffffffffffffffffffffffff00", + "79ffffffffffffffffffffffffffffffffffffffffffffffffffff00", + "7affffffffffffffffffffffffffffffffffffffffffffffffffffff00", + "7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", + "7cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", + "7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", + "7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", + "7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", + "8000", + "8100", + "8200", + "8300", + "8400", + "8500", + "8600", + "8700", + "8800", + "8900", + "8a00", + "8b00", + "8c00", + "8d00", + "8e00", + "8f00", + "9000", + "9100", + "9200", + "9300", + "9400", + "9500", + "9600", + "9700", + "9800", + "9900", + "9a00", + "9b00", + "9c00", + "9d00", + "9e00", + "9f00", + "a000", + "a100", + "a200", + "a300", + "a400", + "f000", + "f100", + "f200", + "f300", + "f400", + "fa00", + "fd00", + "fe00", + "ff00" }; vector opcodes_lll { -- cgit v1.2.3 From a4d2e17a045a5b9ca50b8340242ce40a6be73ec9 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Wed, 26 Sep 2018 12:52:29 +0100 Subject: LLL: add test which has a sub assembly without a forced STOP --- test/liblll/EndToEndTest.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/test/liblll/EndToEndTest.cpp b/test/liblll/EndToEndTest.cpp index ceaf450e..60aef7b0 100644 --- a/test/liblll/EndToEndTest.cpp +++ b/test/liblll/EndToEndTest.cpp @@ -986,6 +986,20 @@ BOOST_AUTO_TEST_CASE(shift_right) BOOST_CHECK(callFallback() == encodeArgs(u256(256))); } +BOOST_AUTO_TEST_CASE(sub_assemblies) +{ + char const* sourceCode = R"( + (returnlll + (return (create 0 (returnlll (sstore 1 1))))) + )"; + compileAndRun(sourceCode); + bytes ret = callFallback(); + BOOST_REQUIRE(ret.size() == 32); + u256 rVal = u256(toHex(ret, 2, HexPrefix::Add)); + BOOST_CHECK(rVal != 0); + BOOST_CHECK(rVal < u256("0x10000000000000000000000000000000000000000")); +} + BOOST_AUTO_TEST_SUITE_END() } -- cgit v1.2.3 From e82917d4e6428fdfc86f10ce63846aea65852540 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Wed, 26 Sep 2018 15:39:53 +0100 Subject: Add LLL error when assembly instruction causes stack underflow --- liblll/CodeFragment.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/liblll/CodeFragment.cpp b/liblll/CodeFragment.cpp index 60dd0917..f37cb8b9 100644 --- a/liblll/CodeFragment.cpp +++ b/liblll/CodeFragment.cpp @@ -236,7 +236,12 @@ void CodeFragment::constructOperation(sp::utree const& _t, CompilerState& _s) int c = 0; for (auto const& i: _t) if (c++) - m_asm.append(CodeFragment(i, _s, m_readFile, true).m_asm); + { + auto fragment = CodeFragment(i, _s, m_readFile, true).m_asm; + if ((m_asm.deposit() + fragment.deposit()) < 0) + error("The assembly instruction resulted in stack underflow"); + m_asm.append(fragment); + } } else if (us == "INCLUDE") { -- cgit v1.2.3 From 90e4d244073c1d9ced47711a533cc8fe4ac217f2 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Wed, 26 Sep 2018 16:08:12 +0100 Subject: LLL: ensure assembly tests have the correct arguments --- test/liblll/Compiler.cpp | 336 +++++++++++++++++++++++------------------------ 1 file changed, 168 insertions(+), 168 deletions(-) diff --git a/test/liblll/Compiler.cpp b/test/liblll/Compiler.cpp index 4d29b019..27db45a5 100644 --- a/test/liblll/Compiler.cpp +++ b/test/liblll/Compiler.cpp @@ -373,59 +373,59 @@ BOOST_AUTO_TEST_CASE(valid_opcodes_asm) { vector opcodes_bytecode { "0000", - "0100", - "0200", - "0300", - "0400", - "0500", - "0600", - "0700", - "0800", - "0900", - "0a00", - "0b00", - "1000", - "1100", - "1200", - "1300", - "1400", - "1500", - "1600", - "1700", - "1800", - "1900", - "1a00", - "2000", + "600060000100", + "600060000200", + "600060000300", + "600060000400", + "600060000500", + "600060000600", + "600060000700", + "6000600060000800", + "6000600060000900", + "600060000a00", + "600060000b00", + "600060001000", + "600060001100", + "600060001200", + "600060001300", + "600060001400", + "60001500", + "600060001600", + "600060001700", + "600060001800", + "60001900", + "600060001a00", + "600060002000", "3000", - "3100", + "60003100", "3200", "3300", "3400", - "3500", + "60003500", "3600", - "3700", + "6000600060003700", "3800", - "3900", + "6000600060003900", "3a00", - "3b00", - "3c00", + "60003b00", + "60006000600060003c00", "3d00", - "3e00", - "3f00", + "6000600060003e00", + "60003f00", "4000", "4100", "4200", "4300", "4400", "4500", - "5000", - "5100", - "5200", - "5300", - "5400", - "5500", - "5600", - "5700", + "60005000", + "60005100", + "600060005200", + "600060005300", + "60005400", + "600060005500", + "60005600", + "600060005700", "5800", "5900", "5a00", @@ -462,109 +462,109 @@ BOOST_AUTO_TEST_CASE(valid_opcodes_asm) "7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", "7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", "7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", - "8000", - "8100", - "8200", - "8300", - "8400", - "8500", - "8600", - "8700", - "8800", - "8900", - "8a00", - "8b00", - "8c00", - "8d00", - "8e00", - "8f00", - "9000", - "9100", - "9200", - "9300", - "9400", - "9500", - "9600", - "9700", - "9800", - "9900", - "9a00", - "9b00", - "9c00", - "9d00", - "9e00", - "9f00", - "a000", - "a100", - "a200", - "a300", - "a400", - "f000", - "f100", - "f200", - "f300", - "f400", - "fa00", - "fd00", + "60006000600060006000600060006000600060006000600060006000600060008000", + "60006000600060006000600060006000600060006000600060006000600060008100", + "60006000600060006000600060006000600060006000600060006000600060008200", + "60006000600060006000600060006000600060006000600060006000600060008300", + "60006000600060006000600060006000600060006000600060006000600060008400", + "60006000600060006000600060006000600060006000600060006000600060008500", + "60006000600060006000600060006000600060006000600060006000600060008600", + "60006000600060006000600060006000600060006000600060006000600060008700", + "60006000600060006000600060006000600060006000600060006000600060008800", + "60006000600060006000600060006000600060006000600060006000600060008900", + "60006000600060006000600060006000600060006000600060006000600060008a00", + "60006000600060006000600060006000600060006000600060006000600060008b00", + "60006000600060006000600060006000600060006000600060006000600060008c00", + "60006000600060006000600060006000600060006000600060006000600060008d00", + "60006000600060006000600060006000600060006000600060006000600060008e00", + "60006000600060006000600060006000600060006000600060006000600060008f00", + "60006000600060006000600060006000600060006000600060006000600060009000", + "60006000600060006000600060006000600060006000600060006000600060009100", + "60006000600060006000600060006000600060006000600060006000600060009200", + "60006000600060006000600060006000600060006000600060006000600060009300", + "60006000600060006000600060006000600060006000600060006000600060009400", + "60006000600060006000600060006000600060006000600060006000600060009500", + "60006000600060006000600060006000600060006000600060006000600060009600", + "60006000600060006000600060006000600060006000600060006000600060009700", + "60006000600060006000600060006000600060006000600060006000600060009800", + "60006000600060006000600060006000600060006000600060006000600060009900", + "60006000600060006000600060006000600060006000600060006000600060009a00", + "60006000600060006000600060006000600060006000600060006000600060009b00", + "60006000600060006000600060006000600060006000600060006000600060009c00", + "60006000600060006000600060006000600060006000600060006000600060009d00", + "60006000600060006000600060006000600060006000600060006000600060009e00", + "60006000600060006000600060006000600060006000600060006000600060009f00", + "60006000a000", + "600060006000a100", + "6000600060006000a200", + "60006000600060006000a300", + "600060006000600060006000a400", + "600060006000f000", + "600060006000600060006000f100", + "600060006000600060006000f200", + "60006000f300", + "60006000600060006000f400", + "60006000600060006000fa00", + "60006000fd00", "fe00", - "ff00" + "6000ff00" }; vector opcodes_lll { "(asm STOP)", - "(asm ADD)", - "(asm MUL)", - "(asm SUB)", - "(asm DIV)", - "(asm SDIV )", - "(asm MOD)", - "(asm SMOD)", - "(asm ADDMOD)", - "(asm MULMOD)", - "(asm EXP)", - "(asm SIGNEXTEND)", - "(asm LT)", - "(asm GT)", - "(asm SLT)", - "(asm SGT)", - "(asm EQ)", - "(asm ISZERO)", - "(asm AND)", - "(asm OR)", - "(asm XOR)", - "(asm NOT)", - "(asm BYTE)", - "(asm KECCAK256)", + "(asm 0 0 ADD)", + "(asm 0 0 MUL)", + "(asm 0 0 SUB)", + "(asm 0 0 DIV)", + "(asm 0 0 SDIV)", + "(asm 0 0 MOD)", + "(asm 0 0 SMOD)", + "(asm 0 0 0 ADDMOD)", + "(asm 0 0 0 MULMOD)", + "(asm 0 0 EXP)", + "(asm 0 0 SIGNEXTEND)", + "(asm 0 0 LT)", + "(asm 0 0 GT)", + "(asm 0 0 SLT)", + "(asm 0 0 SGT)", + "(asm 0 0 EQ)", + "(asm 0 ISZERO)", + "(asm 0 0 AND)", + "(asm 0 0 OR)", + "(asm 0 0 XOR)", + "(asm 0 NOT)", + "(asm 0 0 BYTE)", + "(asm 0 0 KECCAK256)", "(asm ADDRESS)", - "(asm BALANCE)", + "(asm 0 BALANCE)", "(asm ORIGIN)", "(asm CALLER)", "(asm CALLVALUE)", - "(asm CALLDATALOAD)", + "(asm 0 CALLDATALOAD)", "(asm CALLDATASIZE)", - "(asm CALLDATACOPY)", + "(asm 0 0 0 CALLDATACOPY)", "(asm CODESIZE)", - "(asm CODECOPY)", + "(asm 0 0 0 CODECOPY)", "(asm GASPRICE)", - "(asm EXTCODESIZE)}", - "(asm EXTCODECOPY)", + "(asm 0 EXTCODESIZE)", + "(asm 0 0 0 0 EXTCODECOPY)", "(asm RETURNDATASIZE)", - "(asm RETURNDATACOPY)", - "(asm EXTCODEHASH)", + "(asm 0 0 0 RETURNDATACOPY)", + "(asm 0 EXTCODEHASH)", "(asm BLOCKHASH)", "(asm COINBASE)", "(asm TIMESTAMP)", "(asm NUMBER)", "(asm DIFFICULTY)", "(asm GASLIMIT)", - "(asm POP)", - "(asm MLOAD)", - "(asm MSTORE)", - "(asm MSTORE8)", - "(asm SLOAD)", - "(asm SSTORE)", - "(asm JUMP )", - "(asm JUMPI )", + "(asm 0 POP)", + "(asm 0 MLOAD)", + "(asm 0 0 MSTORE)", + "(asm 0 0 MSTORE8)", + "(asm 0 SLOAD)", + "(asm 0 0 SSTORE)", + "(asm 0 JUMP)", + "(asm 0 0 JUMPI)", "(asm PC)", "(asm MSIZE)", "(asm GAS)", @@ -601,52 +601,52 @@ BOOST_AUTO_TEST_CASE(valid_opcodes_asm) "(asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)", "(asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)", "(asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)", - "(asm DUP1)", - "(asm DUP2)", - "(asm DUP3)", - "(asm DUP4)", - "(asm DUP5)", - "(asm DUP6)", - "(asm DUP7)", - "(asm DUP8)", - "(asm DUP9)", - "(asm DUP10)", - "(asm DUP11)", - "(asm DUP12)", - "(asm DUP13)", - "(asm DUP14)", - "(asm DUP15)", - "(asm DUP16)", - "(asm SWAP1)", - "(asm SWAP2)", - "(asm SWAP3)", - "(asm SWAP4)", - "(asm SWAP5)", - "(asm SWAP6)", - "(asm SWAP7)", - "(asm SWAP8)", - "(asm SWAP9)", - "(asm SWAP10)", - "(asm SWAP11)", - "(asm SWAP12)", - "(asm SWAP13)", - "(asm SWAP14)", - "(asm SWAP15)", - "(asm SWAP16)", - "(asm LOG0)", - "(asm LOG1)", - "(asm LOG2)", - "(asm LOG3)", - "(asm LOG4)", - "(asm CREATE)", - "(asm CALL)", - "(asm CALLCODE)", - "(asm RETURN)", - "(asm DELEGATECALL)", - "(asm STATICCALL)", - "(asm REVERT)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP1)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP2)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP3)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP4)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP5)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP6)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP7)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP8)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP9)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP10)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP11)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP12)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP13)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP14)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP15)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP16)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP1)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP2)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP3)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP4)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP5)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP6)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP7)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP8)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP9)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP10)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP11)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP12)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP13)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP14)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP15)", + "(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP16)", + "(asm 0 0 LOG0)", + "(asm 0 0 0 LOG1)", + "(asm 0 0 0 0 LOG2)", + "(asm 0 0 0 0 0 LOG3)", + "(asm 0 0 0 0 0 0 LOG4)", + "(asm 0 0 0 CREATE)", + "(asm 0 0 0 0 0 0 CALL)", + "(asm 0 0 0 0 0 0 CALLCODE)", + "(asm 0 0 RETURN)", + "(asm 0 0 0 0 0 DELEGATECALL)", + "(asm 0 0 0 0 0 STATICCALL)", + "(asm 0 0 REVERT)", "(asm INVALID)", - "(asm SELFDESTRUCT)" + "(asm 0 SELFDESTRUCT)" }; for (size_t i = 0; i < opcodes_bytecode.size(); i++) -- cgit v1.2.3