Add instructions for "evm384"

This commit is contained in:
Alex Beregszaszi 2020-05-02 00:05:35 +01:00
parent 0bbfe45376
commit ab26398a7e
3 changed files with 15 additions and 0 deletions

View File

@ -165,6 +165,9 @@ std::map<std::string, Instruction> const solidity::evmasm::c_instructions =
{ "LOG2", Instruction::LOG2 },
{ "LOG3", Instruction::LOG3 },
{ "LOG4", Instruction::LOG4 },
{ "ADDMOD384", Instruction::ADDMOD384 },
{ "SUBMOD384", Instruction::SUBMOD384 },
{ "MULMODMONT384", Instruction::MULMODMONT384 },
{ "CREATE", Instruction::CREATE },
{ "CALL", Instruction::CALL },
{ "CALLCODE", Instruction::CALLCODE },
@ -311,6 +314,11 @@ static std::map<Instruction, InstructionInfo> const c_instructionInfo =
{ Instruction::LOG2, { "LOG2", 0, 4, 0, true, Tier::Special } },
{ Instruction::LOG3, { "LOG3", 0, 5, 0, true, Tier::Special } },
{ Instruction::LOG4, { "LOG4", 0, 6, 0, true, Tier::Special } },
{ Instruction::ADDMOD384, { "ADDMOD384", 0, 3, 0, true, Tier::Low } },
{ Instruction::SUBMOD384, { "SUBMOD384", 0, 3, 0, true, Tier::Low } },
{ Instruction::MULMODMONT384, { "MULMODMONT384", 0, 4, 0, true, Tier::Low } },
{ Instruction::CREATE, { "CREATE", 0, 3, 1, true, Tier::Special } },
{ Instruction::CALL, { "CALL", 0, 7, 1, true, Tier::Special } },
{ Instruction::CALLCODE, { "CALLCODE", 0, 7, 1, true, Tier::Special } },

View File

@ -185,6 +185,10 @@ enum class Instruction: uint8_t
PUTLOCAL, ///< pop top of stack to local variable -- not part of Instructions.cpp
GETLOCAL, ///< push local variable to top of stack -- not part of Instructions.cpp
ADDMOD384 = 0xc0,
SUBMOD384 = 0xc1,
MULMODMONT384 = 0xc2,
CREATE = 0xf0, ///< create a new account with associated code
CALL, ///< message-call into an account
CALLCODE, ///< message-call with another account's code only

View File

@ -417,6 +417,9 @@ u256 EVMInstructionInterpreter::eval(
case Instruction::RETURNSUB:
case Instruction::PUTLOCAL:
case Instruction::GETLOCAL:
case Instruction::ADDMOD384:
case Instruction::SUBMOD384:
case Instruction::MULMODMONT384:
{
yulAssert(false, "");
return 0;