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) | 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) | 	if (_cs.usedAlloc && _cs.vars.size() && !m_finalised) | ||||||
| 	{ | 	{ | ||||||
| 		m_finalised = true; | 		m_finalised = true; | ||||||
| @ -232,7 +236,12 @@ void CodeFragment::constructOperation(sp::utree const& _t, CompilerState& _s) | |||||||
| 			int c = 0; | 			int c = 0; | ||||||
| 			for (auto const& i: _t) | 			for (auto const& i: _t) | ||||||
| 				if (c++) | 				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") | 		else if (us == "INCLUDE") | ||||||
| 		{ | 		{ | ||||||
|  | |||||||
| @ -147,215 +147,215 @@ BOOST_AUTO_TEST_CASE(disallowed_functional_asm_instructions) | |||||||
| BOOST_AUTO_TEST_CASE(valid_opcodes_functional) | BOOST_AUTO_TEST_CASE(valid_opcodes_functional) | ||||||
| { | { | ||||||
| 	vector<string> opcodes_bytecode { | 	vector<string> opcodes_bytecode { | ||||||
| 		"00", | 		"0000", | ||||||
| 		"6000600001", | 		"600060000100", | ||||||
| 		"6000600002", | 		"600060000200", | ||||||
| 		"6000600003", | 		"600060000300", | ||||||
| 		"6000600004", | 		"600060000400", | ||||||
| 		"6000600005", | 		"600060000500", | ||||||
| 		"6000600006", | 		"600060000600", | ||||||
| 		"6000600007", | 		"600060000700", | ||||||
| 		"60006000600008", | 		"6000600060000800", | ||||||
| 		"60006000600009", | 		"6000600060000900", | ||||||
| 		"600060000a", | 		"600060000a00", | ||||||
| 		"600060000b", | 		"600060000b00", | ||||||
| 		"6000600010", | 		"600060001000", | ||||||
| 		"6000600011", | 		"600060001100", | ||||||
| 		"6000600012", | 		"600060001200", | ||||||
| 		"6000600013", | 		"600060001300", | ||||||
| 		"6000600014", | 		"600060001400", | ||||||
| 		"600015", | 		"60001500", | ||||||
| 		"6000600016", | 		"600060001600", | ||||||
| 		"6000600017", | 		"600060001700", | ||||||
| 		"6000600018", | 		"600060001800", | ||||||
| 		"600019", | 		"60001900", | ||||||
| 		"600060001a", | 		"600060001a00", | ||||||
| 		"6000600020", | 		"600060002000", | ||||||
| 		"30", | 		"3000", | ||||||
| 		"600031", | 		"60003100", | ||||||
| 		"32", | 		"3200", | ||||||
| 		"33", | 		"3300", | ||||||
| 		"34", | 		"3400", | ||||||
| 		"600035", | 		"60003500", | ||||||
| 		"36", | 		"3600", | ||||||
| 		"60006000600037", | 		"6000600060003700", | ||||||
| 		"38", | 		"3800", | ||||||
| 		"60006000600039", | 		"6000600060003900", | ||||||
| 		"3a", | 		"3a00", | ||||||
| 		"60003b", | 		"60003b00", | ||||||
| 		"60006000600060003c", | 		"60006000600060003c00", | ||||||
| 		"3d", | 		"3d00", | ||||||
| 		"6000600060003e", | 		"6000600060003e00", | ||||||
| 		"60003f", | 		"60003f00", | ||||||
| 		"600040", | 		"60004000", | ||||||
| 		"41", | 		"4100", | ||||||
| 		"42", | 		"4200", | ||||||
| 		"43", | 		"4300", | ||||||
| 		"44", | 		"4400", | ||||||
| 		"45", | 		"4500", | ||||||
| 		"600050", | 		"60005000", | ||||||
| 		"600051", | 		"60005100", | ||||||
| 		"6000600052", | 		"600060005200", | ||||||
| 		"6000600053", | 		"600060005300", | ||||||
| 		"600054", | 		"60005400", | ||||||
| 		"6000600055", | 		"600060005500", | ||||||
| 		"600056", | 		"60005600", | ||||||
| 		"6000600057", | 		"600060005700", | ||||||
| 		"58", | 		"5800", | ||||||
| 		"59", | 		"5900", | ||||||
| 		"5a", | 		"5a00", | ||||||
| 		"60ff", | 		"60ff00", | ||||||
| 		"61ffff", | 		"61ffff00", | ||||||
| 		"62ffffff", | 		"62ffffff00", | ||||||
| 		"63ffffffff", | 		"63ffffffff00", | ||||||
| 		"64ffffffffff", | 		"64ffffffffff00", | ||||||
| 		"65ffffffffffff", | 		"65ffffffffffff00", | ||||||
| 		"66ffffffffffffff", | 		"66ffffffffffffff00", | ||||||
| 		"67ffffffffffffffff", | 		"67ffffffffffffffff00", | ||||||
| 		"68ffffffffffffffffff", | 		"68ffffffffffffffffff00", | ||||||
| 		"69ffffffffffffffffffff", | 		"69ffffffffffffffffffff00", | ||||||
| 		"6affffffffffffffffffffff", | 		"6affffffffffffffffffffff00", | ||||||
| 		"6bffffffffffffffffffffffff", | 		"6bffffffffffffffffffffffff00", | ||||||
| 		"6cffffffffffffffffffffffffff", | 		"6cffffffffffffffffffffffffff00", | ||||||
| 		"6dffffffffffffffffffffffffffff", | 		"6dffffffffffffffffffffffffffff00", | ||||||
| 		"6effffffffffffffffffffffffffffff", | 		"6effffffffffffffffffffffffffffff00", | ||||||
| 		"6fffffffffffffffffffffffffffffffff", | 		"6fffffffffffffffffffffffffffffffff00", | ||||||
| 		"70ffffffffffffffffffffffffffffffffff", | 		"70ffffffffffffffffffffffffffffffffff00", | ||||||
| 		"71ffffffffffffffffffffffffffffffffffff", | 		"71ffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"72ffffffffffffffffffffffffffffffffffffff", | 		"72ffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"73ffffffffffffffffffffffffffffffffffffffff", | 		"73ffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"74ffffffffffffffffffffffffffffffffffffffffff", | 		"74ffffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"75ffffffffffffffffffffffffffffffffffffffffffff", | 		"75ffffffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"76ffffffffffffffffffffffffffffffffffffffffffffff", | 		"76ffffffffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"77ffffffffffffffffffffffffffffffffffffffffffffffff", | 		"77ffffffffffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"78ffffffffffffffffffffffffffffffffffffffffffffffffff", | 		"78ffffffffffffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"79ffffffffffffffffffffffffffffffffffffffffffffffffffff", | 		"79ffffffffffffffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"7affffffffffffffffffffffffffffffffffffffffffffffffffffff", | 		"7affffffffffffffffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff", | 		"7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"7cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", | 		"7cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", | 		"7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", | 		"7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", | 		"7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"60006000a0", | 		"60006000a000", | ||||||
| 		"600060006000a1", | 		"600060006000a100", | ||||||
| 		"6000600060006000a2", | 		"6000600060006000a200", | ||||||
| 		"60006000600060006000a3", | 		"60006000600060006000a300", | ||||||
| 		"600060006000600060006000a4", | 		"600060006000600060006000a400", | ||||||
| 		"600060006000f0", | 		"600060006000f000", | ||||||
| 		"6000600060006000600060006000f1", | 		"6000600060006000600060006000f100", | ||||||
| 		"6000600060006000600060006000f2", | 		"6000600060006000600060006000f200", | ||||||
| 		"60006000f3", | 		"60006000f300", | ||||||
| 		"600060006000600060006000f4", | 		"600060006000600060006000f400", | ||||||
| 		"600060006000600060006000fa", | 		"600060006000600060006000fa00", | ||||||
| 		"60006000fd", | 		"60006000fd00", | ||||||
| 		"fe", | 		"fe00", | ||||||
| 		"6000ff" | 		"6000ff00" | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
| 	vector<string> opcodes_lll { | 	vector<string> opcodes_lll { | ||||||
| 		"{ (STOP) }", | 		"(STOP)", | ||||||
| 		"{ (ADD 0 0) }", | 		"(ADD 0 0)", | ||||||
| 		"{ (MUL 0 0) }", | 		"(MUL 0 0)", | ||||||
| 		"{ (SUB 0 0) }", | 		"(SUB 0 0)", | ||||||
| 		"{ (DIV 0 0) }", | 		"(DIV 0 0)", | ||||||
| 		"{ (SDIV 0 0) }", | 		"(SDIV 0 0)", | ||||||
| 		"{ (MOD 0 0) }", | 		"(MOD 0 0)", | ||||||
| 		"{ (SMOD 0 0) }", | 		"(SMOD 0 0)", | ||||||
| 		"{ (ADDMOD 0 0 0) }", | 		"(ADDMOD 0 0 0)", | ||||||
| 		"{ (MULMOD 0 0 0) }", | 		"(MULMOD 0 0 0)", | ||||||
| 		"{ (EXP 0 0) }", | 		"(EXP 0 0)", | ||||||
| 		"{ (SIGNEXTEND 0 0) }", | 		"(SIGNEXTEND 0 0)", | ||||||
| 		"{ (LT 0 0) }", | 		"(LT 0 0)", | ||||||
| 		"{ (GT 0 0) }", | 		"(GT 0 0)", | ||||||
| 		"{ (SLT 0 0) }", | 		"(SLT 0 0)", | ||||||
| 		"{ (SGT 0 0) }", | 		"(SGT 0 0)", | ||||||
| 		"{ (EQ 0 0) }", | 		"(EQ 0 0)", | ||||||
| 		"{ (ISZERO 0) }", | 		"(ISZERO 0)", | ||||||
| 		"{ (AND 0 0) }", | 		"(AND 0 0)", | ||||||
| 		"{ (OR 0 0) }", | 		"(OR 0 0)", | ||||||
| 		"{ (XOR 0 0) }", | 		"(XOR 0 0)", | ||||||
| 		"{ (NOT 0) }", | 		"(NOT 0)", | ||||||
| 		"{ (BYTE 0 0) }", | 		"(BYTE 0 0)", | ||||||
| 		"{ (KECCAK256 0 0) }", | 		"(KECCAK256 0 0)", | ||||||
| 		"{ (ADDRESS) }", | 		"(ADDRESS)", | ||||||
| 		"{ (BALANCE 0) }", | 		"(BALANCE 0)", | ||||||
| 		"{ (ORIGIN) }", | 		"(ORIGIN)", | ||||||
| 		"{ (CALLER) }", | 		"(CALLER)", | ||||||
| 		"{ (CALLVALUE) }", | 		"(CALLVALUE)", | ||||||
| 		"{ (CALLDATALOAD 0) }", | 		"(CALLDATALOAD 0)", | ||||||
| 		"{ (CALLDATASIZE) }", | 		"(CALLDATASIZE)", | ||||||
| 		"{ (CALLDATACOPY 0 0 0) }", | 		"(CALLDATACOPY 0 0 0)", | ||||||
| 		"{ (CODESIZE) }", | 		"(CODESIZE)", | ||||||
| 		"{ (CODECOPY 0 0 0) }", | 		"(CODECOPY 0 0 0)", | ||||||
| 		"{ (GASPRICE) }", | 		"(GASPRICE)", | ||||||
| 		"{ (EXTCODESIZE 0) }", | 		"(EXTCODESIZE 0)", | ||||||
| 		"{ (EXTCODECOPY 0 0 0 0) }", | 		"(EXTCODECOPY 0 0 0 0)", | ||||||
| 		"{ (RETURNDATASIZE) }", | 		"(RETURNDATASIZE)", | ||||||
| 		"{ (RETURNDATACOPY 0 0 0) }", | 		"(RETURNDATACOPY 0 0 0)", | ||||||
| 		"{ (EXTCODEHASH 0) }", | 		"(EXTCODEHASH 0)", | ||||||
| 		"{ (BLOCKHASH 0) }", | 		"(BLOCKHASH 0)", | ||||||
| 		"{ (COINBASE) }", | 		"(COINBASE)", | ||||||
| 		"{ (TIMESTAMP) }", | 		"(TIMESTAMP)", | ||||||
| 		"{ (NUMBER) }", | 		"(NUMBER)", | ||||||
| 		"{ (DIFFICULTY) }", | 		"(DIFFICULTY)", | ||||||
| 		"{ (GASLIMIT) }", | 		"(GASLIMIT)", | ||||||
| 		"{ (POP 0) }", | 		"(POP 0)", | ||||||
| 		"{ (MLOAD 0) }", | 		"(MLOAD 0)", | ||||||
| 		"{ (MSTORE 0 0) }", | 		"(MSTORE 0 0)", | ||||||
| 		"{ (MSTORE8 0 0) }", | 		"(MSTORE8 0 0)", | ||||||
| 		"{ (SLOAD 0) }", | 		"(SLOAD 0)", | ||||||
| 		"{ (SSTORE 0 0) }", | 		"(SSTORE 0 0)", | ||||||
| 		"{ (JUMP 0) }", | 		"(JUMP 0)", | ||||||
| 		"{ (JUMPI 0 0) }", | 		"(JUMPI 0 0)", | ||||||
| 		"{ (PC) }", | 		"(PC)", | ||||||
| 		"{ (MSIZE) }", | 		"(MSIZE)", | ||||||
| 		"{ (GAS) }", | 		"(GAS)", | ||||||
| 		"{ 0xff }", | 		"0xff", | ||||||
| 		"{ 0xffff }", | 		"0xffff", | ||||||
| 		"{ 0xffffff }", | 		"0xffffff", | ||||||
| 		"{ 0xffffffff }", | 		"0xffffffff", | ||||||
| 		"{ 0xffffffffff }", | 		"0xffffffffff", | ||||||
| 		"{ 0xffffffffffff }", | 		"0xffffffffffff", | ||||||
| 		"{ 0xffffffffffffff }", | 		"0xffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffff }", | 		"0xffffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffffff }", | 		"0xffffffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffffffff }", | 		"0xffffffffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffffffffff }", | 		"0xffffffffffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffffffffffff }", | 		"0xffffffffffffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffffffffffffff }", | 		"0xffffffffffffffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffffffffffffffff }", | 		"0xffffffffffffffffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffffffffffffffffff }", | 		"0xffffffffffffffffffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffffffffffffffffffff }", | 		"0xffffffffffffffffffffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffffffffffffffffffffff }", | 		"0xffffffffffffffffffffffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffffffffffffffffffffffff }", | 		"0xffffffffffffffffffffffffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffffffffffffffffffffffffff }", | 		"0xffffffffffffffffffffffffffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffffffffffffffffffffffffffff }", | 		"0xffffffffffffffffffffffffffffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffffffffffffffffffffffffffffff }", | 		"0xffffffffffffffffffffffffffffffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffffffffffffffffffffffffffffffff }", | 		"0xffffffffffffffffffffffffffffffffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffffffffffffffffffffffffffffffffff }", | 		"0xffffffffffffffffffffffffffffffffffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffffffffffffffffffffffffffffffffffff }", | 		"0xffffffffffffffffffffffffffffffffffffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffffffffffffffffffffffffffffffffffffff }", | 		"0xffffffffffffffffffffffffffffffffffffffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffffffffffffffffffffffffffffffffffffffff }", | 		"0xffffffffffffffffffffffffffffffffffffffffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffffffffffffffffffffffffffffffffffffffffff }", | 		"0xffffffffffffffffffffffffffffffffffffffffffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff }", | 		"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff }", | 		"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff }", | 		"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff }", | 		"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", | ||||||
| 		"{ 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff }", | 		"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", | ||||||
| 		"{ (LOG0 0 0) }", | 		"(LOG0 0 0)", | ||||||
| 		"{ (LOG1 0 0 0) }", | 		"(LOG1 0 0 0)", | ||||||
| 		"{ (LOG2 0 0 0 0) }", | 		"(LOG2 0 0 0 0)", | ||||||
| 		"{ (LOG3 0 0 0 0 0) }", | 		"(LOG3 0 0 0 0 0)", | ||||||
| 		"{ (LOG4 0 0 0 0 0 0) }", | 		"(LOG4 0 0 0 0 0 0)", | ||||||
| 		"{ (CREATE 0 0 0) }", | 		"(CREATE 0 0 0)", | ||||||
| 		"{ (CALL 0 0 0 0 0 0 0) }", | 		"(CALL 0 0 0 0 0 0 0)", | ||||||
| 		"{ (CALLCODE 0 0 0 0 0 0 0) }", | 		"(CALLCODE 0 0 0 0 0 0 0)", | ||||||
| 		"{ (RETURN 0 0) }", | 		"(RETURN 0 0)", | ||||||
| 		"{ (DELEGATECALL 0 0 0 0 0 0) }", | 		"(DELEGATECALL 0 0 0 0 0 0)", | ||||||
| 		"{ (STATICCALL 0 0 0 0 0 0) }", | 		"(STATICCALL 0 0 0 0 0 0)", | ||||||
| 		"{ (REVERT 0 0) }", | 		"(REVERT 0 0)", | ||||||
| 		"{ (INVALID) }", | 		"(INVALID)", | ||||||
| 		"{ (SELFDESTRUCT 0) }" | 		"(SELFDESTRUCT 0)" | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
| 	for (size_t i = 0; i < opcodes_bytecode.size(); i++) | 	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) | BOOST_AUTO_TEST_CASE(valid_opcodes_asm) | ||||||
| { | { | ||||||
| 	vector<string> opcodes_bytecode { | 	vector<string> opcodes_bytecode { | ||||||
| 		"00", | 		"0000", | ||||||
| 		"01", | 		"600060000100", | ||||||
| 		"02", | 		"600060000200", | ||||||
| 		"03", | 		"600060000300", | ||||||
| 		"04", | 		"600060000400", | ||||||
| 		"05", | 		"600060000500", | ||||||
| 		"06", | 		"600060000600", | ||||||
| 		"07", | 		"600060000700", | ||||||
| 		"08", | 		"6000600060000800", | ||||||
| 		"09", | 		"6000600060000900", | ||||||
| 		"0a", | 		"600060000a00", | ||||||
| 		"0b", | 		"600060000b00", | ||||||
| 		"10", | 		"600060001000", | ||||||
| 		"11", | 		"600060001100", | ||||||
| 		"12", | 		"600060001200", | ||||||
| 		"13", | 		"600060001300", | ||||||
| 		"14", | 		"600060001400", | ||||||
| 		"15", | 		"60001500", | ||||||
| 		"16", | 		"600060001600", | ||||||
| 		"17", | 		"600060001700", | ||||||
| 		"18", | 		"600060001800", | ||||||
| 		"19", | 		"60001900", | ||||||
| 		"1a", | 		"600060001a00", | ||||||
| 		"20", | 		"600060002000", | ||||||
| 		"30", | 		"3000", | ||||||
| 		"31", | 		"60003100", | ||||||
| 		"32", | 		"3200", | ||||||
| 		"33", | 		"3300", | ||||||
| 		"34", | 		"3400", | ||||||
| 		"35", | 		"60003500", | ||||||
| 		"36", | 		"3600", | ||||||
| 		"37", | 		"6000600060003700", | ||||||
| 		"38", | 		"3800", | ||||||
| 		"39", | 		"6000600060003900", | ||||||
| 		"3a", | 		"3a00", | ||||||
| 		"3b", | 		"60003b00", | ||||||
| 		"3c", | 		"60006000600060003c00", | ||||||
| 		"3d", | 		"3d00", | ||||||
| 		"3e", | 		"6000600060003e00", | ||||||
| 		"3f", | 		"60003f00", | ||||||
| 		"40", | 		"4000", | ||||||
| 		"41", | 		"4100", | ||||||
| 		"42", | 		"4200", | ||||||
| 		"43", | 		"4300", | ||||||
| 		"44", | 		"4400", | ||||||
| 		"45", | 		"4500", | ||||||
| 		"50", | 		"60005000", | ||||||
| 		"51", | 		"60005100", | ||||||
| 		"52", | 		"600060005200", | ||||||
| 		"53", | 		"600060005300", | ||||||
| 		"54", | 		"60005400", | ||||||
| 		"55", | 		"600060005500", | ||||||
| 		"56", | 		"60005600", | ||||||
| 		"57", | 		"600060005700", | ||||||
| 		"58", | 		"5800", | ||||||
| 		"59", | 		"5900", | ||||||
| 		"5a", | 		"5a00", | ||||||
| 		"5b", | 		"5b00", | ||||||
| 		"60ff", | 		"60ff00", | ||||||
| 		"61ffff", | 		"61ffff00", | ||||||
| 		"62ffffff", | 		"62ffffff00", | ||||||
| 		"63ffffffff", | 		"63ffffffff00", | ||||||
| 		"64ffffffffff", | 		"64ffffffffff00", | ||||||
| 		"65ffffffffffff", | 		"65ffffffffffff00", | ||||||
| 		"66ffffffffffffff", | 		"66ffffffffffffff00", | ||||||
| 		"67ffffffffffffffff", | 		"67ffffffffffffffff00", | ||||||
| 		"68ffffffffffffffffff", | 		"68ffffffffffffffffff00", | ||||||
| 		"69ffffffffffffffffffff", | 		"69ffffffffffffffffffff00", | ||||||
| 		"6affffffffffffffffffffff", | 		"6affffffffffffffffffffff00", | ||||||
| 		"6bffffffffffffffffffffffff", | 		"6bffffffffffffffffffffffff00", | ||||||
| 		"6cffffffffffffffffffffffffff", | 		"6cffffffffffffffffffffffffff00", | ||||||
| 		"6dffffffffffffffffffffffffffff", | 		"6dffffffffffffffffffffffffffff00", | ||||||
| 		"6effffffffffffffffffffffffffffff", | 		"6effffffffffffffffffffffffffffff00", | ||||||
| 		"6fffffffffffffffffffffffffffffffff", | 		"6fffffffffffffffffffffffffffffffff00", | ||||||
| 		"70ffffffffffffffffffffffffffffffffff", | 		"70ffffffffffffffffffffffffffffffffff00", | ||||||
| 		"71ffffffffffffffffffffffffffffffffffff", | 		"71ffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"72ffffffffffffffffffffffffffffffffffffff", | 		"72ffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"73ffffffffffffffffffffffffffffffffffffffff", | 		"73ffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"74ffffffffffffffffffffffffffffffffffffffffff", | 		"74ffffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"75ffffffffffffffffffffffffffffffffffffffffffff", | 		"75ffffffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"76ffffffffffffffffffffffffffffffffffffffffffffff", | 		"76ffffffffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"77ffffffffffffffffffffffffffffffffffffffffffffffff", | 		"77ffffffffffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"78ffffffffffffffffffffffffffffffffffffffffffffffffff", | 		"78ffffffffffffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"79ffffffffffffffffffffffffffffffffffffffffffffffffffff", | 		"79ffffffffffffffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"7affffffffffffffffffffffffffffffffffffffffffffffffffffff", | 		"7affffffffffffffffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff", | 		"7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"7cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", | 		"7cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", | 		"7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", | 		"7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", | 		"7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", | ||||||
| 		"80", | 		"60006000600060006000600060006000600060006000600060006000600060008000", | ||||||
| 		"81", | 		"60006000600060006000600060006000600060006000600060006000600060008100", | ||||||
| 		"82", | 		"60006000600060006000600060006000600060006000600060006000600060008200", | ||||||
| 		"83", | 		"60006000600060006000600060006000600060006000600060006000600060008300", | ||||||
| 		"84", | 		"60006000600060006000600060006000600060006000600060006000600060008400", | ||||||
| 		"85", | 		"60006000600060006000600060006000600060006000600060006000600060008500", | ||||||
| 		"86", | 		"60006000600060006000600060006000600060006000600060006000600060008600", | ||||||
| 		"87", | 		"60006000600060006000600060006000600060006000600060006000600060008700", | ||||||
| 		"88", | 		"60006000600060006000600060006000600060006000600060006000600060008800", | ||||||
| 		"89", | 		"60006000600060006000600060006000600060006000600060006000600060008900", | ||||||
| 		"8a", | 		"60006000600060006000600060006000600060006000600060006000600060008a00", | ||||||
| 		"8b", | 		"60006000600060006000600060006000600060006000600060006000600060008b00", | ||||||
| 		"8c", | 		"60006000600060006000600060006000600060006000600060006000600060008c00", | ||||||
| 		"8d", | 		"60006000600060006000600060006000600060006000600060006000600060008d00", | ||||||
| 		"8e", | 		"60006000600060006000600060006000600060006000600060006000600060008e00", | ||||||
| 		"8f", | 		"60006000600060006000600060006000600060006000600060006000600060008f00", | ||||||
| 		"90", | 		"60006000600060006000600060006000600060006000600060006000600060009000", | ||||||
| 		"91", | 		"60006000600060006000600060006000600060006000600060006000600060009100", | ||||||
| 		"92", | 		"60006000600060006000600060006000600060006000600060006000600060009200", | ||||||
| 		"93", | 		"60006000600060006000600060006000600060006000600060006000600060009300", | ||||||
| 		"94", | 		"60006000600060006000600060006000600060006000600060006000600060009400", | ||||||
| 		"95", | 		"60006000600060006000600060006000600060006000600060006000600060009500", | ||||||
| 		"96", | 		"60006000600060006000600060006000600060006000600060006000600060009600", | ||||||
| 		"97", | 		"60006000600060006000600060006000600060006000600060006000600060009700", | ||||||
| 		"98", | 		"60006000600060006000600060006000600060006000600060006000600060009800", | ||||||
| 		"99", | 		"60006000600060006000600060006000600060006000600060006000600060009900", | ||||||
| 		"9a", | 		"60006000600060006000600060006000600060006000600060006000600060009a00", | ||||||
| 		"9b", | 		"60006000600060006000600060006000600060006000600060006000600060009b00", | ||||||
| 		"9c", | 		"60006000600060006000600060006000600060006000600060006000600060009c00", | ||||||
| 		"9d", | 		"60006000600060006000600060006000600060006000600060006000600060009d00", | ||||||
| 		"9e", | 		"60006000600060006000600060006000600060006000600060006000600060009e00", | ||||||
| 		"9f", | 		"60006000600060006000600060006000600060006000600060006000600060009f00", | ||||||
| 		"a0", | 		"60006000a000", | ||||||
| 		"a1", | 		"600060006000a100", | ||||||
| 		"a2", | 		"6000600060006000a200", | ||||||
| 		"a3", | 		"60006000600060006000a300", | ||||||
| 		"a4", | 		"600060006000600060006000a400", | ||||||
| 		"f0", | 		"600060006000f000", | ||||||
| 		"f1", | 		"600060006000600060006000f100", | ||||||
| 		"f2", | 		"600060006000600060006000f200", | ||||||
| 		"f3", | 		"60006000f300", | ||||||
| 		"f4", | 		"60006000600060006000f400", | ||||||
| 		"fa", | 		"60006000600060006000fa00", | ||||||
| 		"fd", | 		"60006000fd00", | ||||||
| 		"fe", | 		"fe00", | ||||||
| 		"ff" | 		"6000ff00" | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
| 	vector<string> opcodes_lll { | 	vector<string> opcodes_lll { | ||||||
| 		"{ (asm STOP) }", | 		"(asm STOP)", | ||||||
| 		"{ (asm ADD) }", | 		"(asm 0 0 ADD)", | ||||||
| 		"{ (asm MUL) }", | 		"(asm 0 0 MUL)", | ||||||
| 		"{ (asm SUB) }", | 		"(asm 0 0 SUB)", | ||||||
| 		"{ (asm DIV) }", | 		"(asm 0 0 DIV)", | ||||||
| 		"{ (asm SDIV ) }", | 		"(asm 0 0 SDIV)", | ||||||
| 		"{ (asm MOD) }", | 		"(asm 0 0 MOD)", | ||||||
| 		"{ (asm SMOD) }", | 		"(asm 0 0 SMOD)", | ||||||
| 		"{ (asm ADDMOD) }", | 		"(asm 0 0 0 ADDMOD)", | ||||||
| 		"{ (asm MULMOD) }", | 		"(asm 0 0 0 MULMOD)", | ||||||
| 		"{ (asm EXP) }", | 		"(asm 0 0 EXP)", | ||||||
| 		"{ (asm SIGNEXTEND) }", | 		"(asm 0 0 SIGNEXTEND)", | ||||||
| 		"{ (asm LT) }", | 		"(asm 0 0 LT)", | ||||||
| 		"{ (asm GT) }", | 		"(asm 0 0 GT)", | ||||||
| 		"{ (asm SLT) }", | 		"(asm 0 0 SLT)", | ||||||
| 		"{ (asm SGT) }", | 		"(asm 0 0 SGT)", | ||||||
| 		"{ (asm EQ) }", | 		"(asm 0 0 EQ)", | ||||||
| 		"{ (asm ISZERO) }", | 		"(asm 0 ISZERO)", | ||||||
| 		"{ (asm AND) }", | 		"(asm 0 0 AND)", | ||||||
| 		"{ (asm OR) }", | 		"(asm 0 0 OR)", | ||||||
| 		"{ (asm XOR) }", | 		"(asm 0 0 XOR)", | ||||||
| 		"{ (asm NOT) }", | 		"(asm 0 NOT)", | ||||||
| 		"{ (asm BYTE) }", | 		"(asm 0 0 BYTE)", | ||||||
| 		"{ (asm KECCAK256) }", | 		"(asm 0 0 KECCAK256)", | ||||||
| 		"{ (asm ADDRESS) }", | 		"(asm ADDRESS)", | ||||||
| 		"{ (asm BALANCE) }", | 		"(asm 0 BALANCE)", | ||||||
| 		"{ (asm ORIGIN) }", | 		"(asm ORIGIN)", | ||||||
| 		"{ (asm CALLER) }", | 		"(asm CALLER)", | ||||||
| 		"{ (asm CALLVALUE) }", | 		"(asm CALLVALUE)", | ||||||
| 		"{ (asm CALLDATALOAD) }", | 		"(asm 0 CALLDATALOAD)", | ||||||
| 		"{ (asm CALLDATASIZE) }", | 		"(asm CALLDATASIZE)", | ||||||
| 		"{ (asm CALLDATACOPY) }", | 		"(asm 0 0 0 CALLDATACOPY)", | ||||||
| 		"{ (asm CODESIZE) }", | 		"(asm CODESIZE)", | ||||||
| 		"{ (asm CODECOPY) }", | 		"(asm 0 0 0 CODECOPY)", | ||||||
| 		"{ (asm GASPRICE) }", | 		"(asm GASPRICE)", | ||||||
| 		"{ (asm EXTCODESIZE)}", | 		"(asm 0 EXTCODESIZE)", | ||||||
| 		"{ (asm EXTCODECOPY) }", | 		"(asm 0 0 0 0 EXTCODECOPY)", | ||||||
| 		"{ (asm RETURNDATASIZE) }", | 		"(asm RETURNDATASIZE)", | ||||||
| 		"{ (asm RETURNDATACOPY) }", | 		"(asm 0 0 0 RETURNDATACOPY)", | ||||||
| 		"{ (asm EXTCODEHASH) }", | 		"(asm 0 EXTCODEHASH)", | ||||||
| 		"{ (asm BLOCKHASH) }", | 		"(asm BLOCKHASH)", | ||||||
| 		"{ (asm COINBASE) }", | 		"(asm COINBASE)", | ||||||
| 		"{ (asm TIMESTAMP) }", | 		"(asm TIMESTAMP)", | ||||||
| 		"{ (asm NUMBER) }", | 		"(asm NUMBER)", | ||||||
| 		"{ (asm DIFFICULTY) }", | 		"(asm DIFFICULTY)", | ||||||
| 		"{ (asm GASLIMIT) }", | 		"(asm GASLIMIT)", | ||||||
| 		"{ (asm POP) }", | 		"(asm 0 POP)", | ||||||
| 		"{ (asm MLOAD) }", | 		"(asm 0 MLOAD)", | ||||||
| 		"{ (asm MSTORE) }", | 		"(asm 0 0 MSTORE)", | ||||||
| 		"{ (asm MSTORE8) }", | 		"(asm 0 0 MSTORE8)", | ||||||
| 		"{ (asm SLOAD) }", | 		"(asm 0 SLOAD)", | ||||||
| 		"{ (asm SSTORE) }", | 		"(asm 0 0 SSTORE)", | ||||||
| 		"{ (asm JUMP ) }", | 		"(asm 0 JUMP)", | ||||||
| 		"{ (asm JUMPI ) }", | 		"(asm 0 0 JUMPI)", | ||||||
| 		"{ (asm PC) }", | 		"(asm PC)", | ||||||
| 		"{ (asm MSIZE) }", | 		"(asm MSIZE)", | ||||||
| 		"{ (asm GAS) }", | 		"(asm GAS)", | ||||||
| 		"{ (asm JUMPDEST) }", | 		"(asm JUMPDEST)", | ||||||
| 		"{ (asm 0xff) }", | 		"(asm 0xff)", | ||||||
| 		"{ (asm 0xffff) }", | 		"(asm 0xffff)", | ||||||
| 		"{ (asm 0xffffff) }", | 		"(asm 0xffffff)", | ||||||
| 		"{ (asm 0xffffffff) }", | 		"(asm 0xffffffff)", | ||||||
| 		"{ (asm 0xffffffffff) }", | 		"(asm 0xffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffff) }", | 		"(asm 0xffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffff) }", | 		"(asm 0xffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffff) }", | 		"(asm 0xffffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffffff) }", | 		"(asm 0xffffffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffffffff) }", | 		"(asm 0xffffffffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffffffffff) }", | 		"(asm 0xffffffffffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffffffffffff) }", | 		"(asm 0xffffffffffffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffffffffffffff) }", | 		"(asm 0xffffffffffffffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffffffffffffffff) }", | 		"(asm 0xffffffffffffffffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffffffffffffffffff) }", | 		"(asm 0xffffffffffffffffffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffffffffffffffffffff) }", | 		"(asm 0xffffffffffffffffffffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffffffffffffffffffffff) }", | 		"(asm 0xffffffffffffffffffffffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffffffffffffffffffffffff) }", | 		"(asm 0xffffffffffffffffffffffffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffffffffffffffffffffffffff) }", | 		"(asm 0xffffffffffffffffffffffffffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffffffffffffffffffffffffffff) }", | 		"(asm 0xffffffffffffffffffffffffffffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffffffffffffffffffffffffffffff) }", | 		"(asm 0xffffffffffffffffffffffffffffffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffffffffffffffffffffffffffffffff) }", | 		"(asm 0xffffffffffffffffffffffffffffffffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffffffffffffffffffffffffffffffffff) }", | 		"(asm 0xffffffffffffffffffffffffffffffffffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffffffffffffffffffffffffffffffffffff) }", | 		"(asm 0xffffffffffffffffffffffffffffffffffffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffffffffffffffffffffffffffffffffffffff) }", | 		"(asm 0xffffffffffffffffffffffffffffffffffffffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffff) }", | 		"(asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffff) }", | 		"(asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff) }", | 		"(asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) }", | 		"(asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) }", | 		"(asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) }", | 		"(asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)", | ||||||
| 		"{ (asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) }", | 		"(asm 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)", | ||||||
| 		"{ (asm DUP1) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP1)", | ||||||
| 		"{ (asm DUP2) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP2)", | ||||||
| 		"{ (asm DUP3) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP3)", | ||||||
| 		"{ (asm DUP4) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP4)", | ||||||
| 		"{ (asm DUP5) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP5)", | ||||||
| 		"{ (asm DUP6) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP6)", | ||||||
| 		"{ (asm DUP7) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP7)", | ||||||
| 		"{ (asm DUP8) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP8)", | ||||||
| 		"{ (asm DUP9) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP9)", | ||||||
| 		"{ (asm DUP10) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP10)", | ||||||
| 		"{ (asm DUP11) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP11)", | ||||||
| 		"{ (asm DUP12) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP12)", | ||||||
| 		"{ (asm DUP13) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP13)", | ||||||
| 		"{ (asm DUP14) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP14)", | ||||||
| 		"{ (asm DUP15) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP15)", | ||||||
| 		"{ (asm DUP16) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DUP16)", | ||||||
| 		"{ (asm SWAP1) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP1)", | ||||||
| 		"{ (asm SWAP2) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP2)", | ||||||
| 		"{ (asm SWAP3) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP3)", | ||||||
| 		"{ (asm SWAP4) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP4)", | ||||||
| 		"{ (asm SWAP5) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP5)", | ||||||
| 		"{ (asm SWAP6) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP6)", | ||||||
| 		"{ (asm SWAP7) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP7)", | ||||||
| 		"{ (asm SWAP8) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP8)", | ||||||
| 		"{ (asm SWAP9) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP9)", | ||||||
| 		"{ (asm SWAP10) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP10)", | ||||||
| 		"{ (asm SWAP11) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP11)", | ||||||
| 		"{ (asm SWAP12) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP12)", | ||||||
| 		"{ (asm SWAP13) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP13)", | ||||||
| 		"{ (asm SWAP14) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP14)", | ||||||
| 		"{ (asm SWAP15) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP15)", | ||||||
| 		"{ (asm SWAP16) }", | 		"(asm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SWAP16)", | ||||||
| 		"{ (asm LOG0) }", | 		"(asm 0 0 LOG0)", | ||||||
| 		"{ (asm LOG1) }", | 		"(asm 0 0 0 LOG1)", | ||||||
| 		"{ (asm LOG2) }", | 		"(asm 0 0 0 0 LOG2)", | ||||||
| 		"{ (asm LOG3) }", | 		"(asm 0 0 0 0 0 LOG3)", | ||||||
| 		"{ (asm LOG4) }", | 		"(asm 0 0 0 0 0 0 LOG4)", | ||||||
| 		"{ (asm CREATE) }", | 		"(asm 0 0 0 CREATE)", | ||||||
| 		"{ (asm CALL) }", | 		"(asm 0 0 0 0 0 0 CALL)", | ||||||
| 		"{ (asm CALLCODE) }", | 		"(asm 0 0 0 0 0 0 CALLCODE)", | ||||||
| 		"{ (asm RETURN) }", | 		"(asm 0 0 RETURN)", | ||||||
| 		"{ (asm DELEGATECALL) }", | 		"(asm 0 0 0 0 0 DELEGATECALL)", | ||||||
| 		"{ (asm STATICCALL) }", | 		"(asm 0 0 0 0 0 STATICCALL)", | ||||||
| 		"{ (asm REVERT) }", | 		"(asm 0 0 REVERT)", | ||||||
| 		"{ (asm INVALID) }", | 		"(asm INVALID)", | ||||||
| 		"{ (asm SELFDESTRUCT) }" | 		"(asm 0 SELFDESTRUCT)" | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
| 	for (size_t i = 0; i < opcodes_bytecode.size(); i++) | 	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_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() | BOOST_AUTO_TEST_SUITE_END() | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user