diff --git a/core/vm/opcodes.go b/core/vm/opcodes.go
index 5c74220a543115334dfc0675a0db8ae7f3f627f6..f1b5b079386c4c076e1db0b0ada76f9748426538 100644
--- a/core/vm/opcodes.go
+++ b/core/vm/opcodes.go
@@ -348,3 +348,139 @@ func (o OpCode) String() string {
 
 	return str
 }
+
+var stringToOp = map[string]OpCode{
+	"STOP":         STOP,
+	"ADD":          ADD,
+	"MUL":          MUL,
+	"SUB":          SUB,
+	"DIV":          DIV,
+	"SDIV":         SDIV,
+	"MOD":          MOD,
+	"SMOD":         SMOD,
+	"EXP":          EXP,
+	"NOT":          NOT,
+	"LT":           LT,
+	"GT":           GT,
+	"SLT":          SLT,
+	"SGT":          SGT,
+	"EQ":           EQ,
+	"ISZERO":       ISZERO,
+	"SIGNEXTEND":   SIGNEXTEND,
+	"AND":          AND,
+	"OR":           OR,
+	"XOR":          XOR,
+	"BYTE":         BYTE,
+	"ADDMOD":       ADDMOD,
+	"MULMOD":       MULMOD,
+	"SHA3":         SHA3,
+	"ADDRESS":      ADDRESS,
+	"BALANCE":      BALANCE,
+	"ORIGIN":       ORIGIN,
+	"CALLER":       CALLER,
+	"CALLVALUE":    CALLVALUE,
+	"CALLDATALOAD": CALLDATALOAD,
+	"CALLDATASIZE": CALLDATASIZE,
+	"CALLDATACOPY": CALLDATACOPY,
+	"CODESIZE":     CODESIZE,
+	"CODECOPY":     CODECOPY,
+	"GASPRICE":     GASPRICE,
+	"BLOCKHASH":    BLOCKHASH,
+	"COINBASE":     COINBASE,
+	"TIMESTAMP":    TIMESTAMP,
+	"NUMBER":       NUMBER,
+	"DIFFICULTY":   DIFFICULTY,
+	"GASLIMIT":     GASLIMIT,
+	"EXTCODESIZE":  EXTCODESIZE,
+	"EXTCODECOPY":  EXTCODECOPY,
+	"POP":          POP,
+	"MLOAD":        MLOAD,
+	"MSTORE":       MSTORE,
+	"MSTORE8":      MSTORE8,
+	"SLOAD":        SLOAD,
+	"SSTORE":       SSTORE,
+	"JUMP":         JUMP,
+	"JUMPI":        JUMPI,
+	"PC":           PC,
+	"MSIZE":        MSIZE,
+	"GAS":          GAS,
+	"JUMPDEST":     JUMPDEST,
+	"PUSH1":        PUSH1,
+	"PUSH2":        PUSH2,
+	"PUSH3":        PUSH3,
+	"PUSH4":        PUSH4,
+	"PUSH5":        PUSH5,
+	"PUSH6":        PUSH6,
+	"PUSH7":        PUSH7,
+	"PUSH8":        PUSH8,
+	"PUSH9":        PUSH9,
+	"PUSH10":       PUSH10,
+	"PUSH11":       PUSH11,
+	"PUSH12":       PUSH12,
+	"PUSH13":       PUSH13,
+	"PUSH14":       PUSH14,
+	"PUSH15":       PUSH15,
+	"PUSH16":       PUSH16,
+	"PUSH17":       PUSH17,
+	"PUSH18":       PUSH18,
+	"PUSH19":       PUSH19,
+	"PUSH20":       PUSH20,
+	"PUSH21":       PUSH21,
+	"PUSH22":       PUSH22,
+	"PUSH23":       PUSH23,
+	"PUSH24":       PUSH24,
+	"PUSH25":       PUSH25,
+	"PUSH26":       PUSH26,
+	"PUSH27":       PUSH27,
+	"PUSH28":       PUSH28,
+	"PUSH29":       PUSH29,
+	"PUSH30":       PUSH30,
+	"PUSH31":       PUSH31,
+	"PUSH32":       PUSH32,
+	"DUP1":         DUP1,
+	"DUP2":         DUP2,
+	"DUP3":         DUP3,
+	"DUP4":         DUP4,
+	"DUP5":         DUP5,
+	"DUP6":         DUP6,
+	"DUP7":         DUP7,
+	"DUP8":         DUP8,
+	"DUP9":         DUP9,
+	"DUP10":        DUP10,
+	"DUP11":        DUP11,
+	"DUP12":        DUP12,
+	"DUP13":        DUP13,
+	"DUP14":        DUP14,
+	"DUP15":        DUP15,
+	"DUP16":        DUP16,
+	"SWAP1":        SWAP1,
+	"SWAP2":        SWAP2,
+	"SWAP3":        SWAP3,
+	"SWAP4":        SWAP4,
+	"SWAP5":        SWAP5,
+	"SWAP6":        SWAP6,
+	"SWAP7":        SWAP7,
+	"SWAP8":        SWAP8,
+	"SWAP9":        SWAP9,
+	"SWAP10":       SWAP10,
+	"SWAP11":       SWAP11,
+	"SWAP12":       SWAP12,
+	"SWAP13":       SWAP13,
+	"SWAP14":       SWAP14,
+	"SWAP15":       SWAP15,
+	"SWAP16":       SWAP16,
+	"LOG0":         LOG0,
+	"LOG1":         LOG1,
+	"LOG2":         LOG2,
+	"LOG3":         LOG3,
+	"LOG4":         LOG4,
+	"CREATE":       CREATE,
+	"CALL":         CALL,
+	"RETURN":       RETURN,
+	"CALLCODE":     CALLCODE,
+	"SUICIDE":      SUICIDE,
+}
+
+func StringToOp(str string) OpCode {
+	return stringToOp[str]
+}