mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #5020 from ethereum/lll-seq-fix
LLL: terminate sequences with a STOP
This commit is contained in:
commit
c237013911
@ -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;
|
||||
@ -232,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<IncorrectParameterCount>("The assembly instruction resulted in stack underflow");
|
||||
m_asm.append(fragment);
|
||||
}
|
||||
}
|
||||
else if (us == "INCLUDE")
|
||||
{
|
||||
|
@ -147,215 +147,215 @@ BOOST_AUTO_TEST_CASE(disallowed_functional_asm_instructions)
|
||||
BOOST_AUTO_TEST_CASE(valid_opcodes_functional)
|
||||
{
|
||||
vector<string> 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<string> 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++)
|
||||
@ -372,281 +372,281 @@ BOOST_AUTO_TEST_CASE(valid_opcodes_functional)
|
||||
BOOST_AUTO_TEST_CASE(valid_opcodes_asm)
|
||||
{
|
||||
vector<string> 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",
|
||||
"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",
|
||||
"4000",
|
||||
"4100",
|
||||
"4200",
|
||||
"4300",
|
||||
"4400",
|
||||
"4500",
|
||||
"60005000",
|
||||
"60005100",
|
||||
"600060005200",
|
||||
"600060005300",
|
||||
"60005400",
|
||||
"600060005500",
|
||||
"60005600",
|
||||
"600060005700",
|
||||
"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",
|
||||
"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",
|
||||
"6000ff00"
|
||||
};
|
||||
|
||||
vector<string> 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 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 0 BALANCE)",
|
||||
"(asm ORIGIN)",
|
||||
"(asm CALLER)",
|
||||
"(asm CALLVALUE)",
|
||||
"(asm 0 CALLDATALOAD)",
|
||||
"(asm CALLDATASIZE)",
|
||||
"(asm 0 0 0 CALLDATACOPY)",
|
||||
"(asm CODESIZE)",
|
||||
"(asm 0 0 0 CODECOPY)",
|
||||
"(asm GASPRICE)",
|
||||
"(asm 0 EXTCODESIZE)",
|
||||
"(asm 0 0 0 0 EXTCODECOPY)",
|
||||
"(asm RETURNDATASIZE)",
|
||||
"(asm 0 0 0 RETURNDATACOPY)",
|
||||
"(asm 0 EXTCODEHASH)",
|
||||
"(asm BLOCKHASH)",
|
||||
"(asm COINBASE)",
|
||||
"(asm TIMESTAMP)",
|
||||
"(asm NUMBER)",
|
||||
"(asm DIFFICULTY)",
|
||||
"(asm GASLIMIT)",
|
||||
"(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)",
|
||||
"(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 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 0 SELFDESTRUCT)"
|
||||
};
|
||||
|
||||
for (size_t i = 0; i < opcodes_bytecode.size(); i++)
|
||||
|
@ -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()
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user