diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2017-02-07 06:14:17 +0800 |
---|---|---|
committer | Alex Beregszaszi <alex@rtfs.hu> | 2018-02-27 19:03:18 +0800 |
commit | 59e6ea601b90577e39fe22a4c504f09e862dc40e (patch) | |
tree | 2635157b8eb07e02c768b9c113cff6e9d8badbc7 | |
parent | 9c31a0d8f584f245ce368dc57ee760fe752f3ca6 (diff) | |
download | dexon-solidity-59e6ea601b90577e39fe22a4c504f09e862dc40e.tar.gz dexon-solidity-59e6ea601b90577e39fe22a4c504f09e862dc40e.tar.zst dexon-solidity-59e6ea601b90577e39fe22a4c504f09e862dc40e.zip |
Add bitwise shift operators to libevmasm (EIP145)
-rw-r--r-- | libevmasm/Instruction.cpp | 10 | ||||
-rw-r--r-- | libevmasm/Instruction.h | 7 |
2 files changed, 16 insertions, 1 deletions
diff --git a/libevmasm/Instruction.cpp b/libevmasm/Instruction.cpp index b38981d2..c25c9653 100644 --- a/libevmasm/Instruction.cpp +++ b/libevmasm/Instruction.cpp @@ -50,6 +50,11 @@ const std::map<std::string, Instruction> dev::solidity::c_instructions = { "OR", Instruction::OR }, { "XOR", Instruction::XOR }, { "BYTE", Instruction::BYTE }, + { "SHL", Instruction::SHL }, + { "SHR", Instruction::SHR }, + { "SAR", Instruction::SAR }, + { "ROL", Instruction::ROL }, + { "ROR", Instruction::ROR }, { "ADDMOD", Instruction::ADDMOD }, { "MULMOD", Instruction::MULMOD }, { "SIGNEXTEND", Instruction::SIGNEXTEND }, @@ -190,6 +195,11 @@ static const std::map<Instruction, InstructionInfo> c_instructionInfo = { Instruction::OR, { "OR", 0, 2, 1, false, Tier::VeryLow } }, { Instruction::XOR, { "XOR", 0, 2, 1, false, Tier::VeryLow } }, { Instruction::BYTE, { "BYTE", 0, 2, 1, false, Tier::VeryLow } }, + { Instruction::SHL, { "SHL", 0, 2, 1, false, Tier::VeryLow } }, + { Instruction::SHR, { "SHR", 0, 2, 1, false, Tier::VeryLow } }, + { Instruction::SAR, { "SAR", 0, 2, 1, false, Tier::VeryLow } }, + { Instruction::ROL, { "ROL", 0, 2, 1, false, Tier::VeryLow } }, + { Instruction::ROR, { "ROR", 0, 2, 1, false, Tier::VeryLow } }, { Instruction::ADDMOD, { "ADDMOD", 0, 3, 1, false, Tier::Mid } }, { Instruction::MULMOD, { "MULMOD", 0, 3, 1, false, Tier::Mid } }, { Instruction::SIGNEXTEND, { "SIGNEXTEND", 0, 2, 1, false, Tier::Low } }, diff --git a/libevmasm/Instruction.h b/libevmasm/Instruction.h index d9c53900..e56d4c9a 100644 --- a/libevmasm/Instruction.h +++ b/libevmasm/Instruction.h @@ -59,8 +59,13 @@ enum class Instruction: uint8_t AND, ///< bitwise AND operation OR, ///< bitwise OR operation XOR, ///< bitwise XOR operation - NOT, ///< bitwise NOT opertation + NOT, ///< bitwise NOT operation BYTE, ///< retrieve single byte from word + SHL, ///< bitwise SHL operation + SHR, ///< bitwise SHR operation + SAR, ///< bitwise SAR operation + ROL, ///< bitwise ROL operation + ROR, ///< bitwise ROR operation KECCAK256 = 0x20, ///< compute KECCAK-256 hash |