From 98d4b511207404a133ceca37467f9a1c32c20bc5 Mon Sep 17 00:00:00 2001 From: obscuren Date: Wed, 28 May 2014 12:03:12 +0200 Subject: Changed opcode names --- ethchain/asm.go | 4 +- ethchain/types.go | 333 ++++++++++++++++++++++++++---------------------------- 2 files changed, 165 insertions(+), 172 deletions(-) diff --git a/ethchain/asm.go b/ethchain/asm.go index 492be0999..430a89450 100644 --- a/ethchain/asm.go +++ b/ethchain/asm.go @@ -21,9 +21,9 @@ func Disassemble(script []byte) (asm []string) { asm = append(asm, fmt.Sprintf("%v", op)) switch op { - case oPUSH1, oPUSH2, oPUSH3, oPUSH4, oPUSH5, oPUSH6, oPUSH7, oPUSH8, oPUSH9, oPUSH10, oPUSH11, oPUSH12, oPUSH13, oPUSH14, oPUSH15, oPUSH16, oPUSH17, oPUSH18, oPUSH19, oPUSH20, oPUSH21, oPUSH22, oPUSH23, oPUSH24, oPUSH25, oPUSH26, oPUSH27, oPUSH28, oPUSH29, oPUSH30, oPUSH31, oPUSH32: + case PUSH1, PUSH2, PUSH3, PUSH4, PUSH5, PUSH6, PUSH7, PUSH8, PUSH9, PUSH10, PUSH11, PUSH12, PUSH13, PUSH14, PUSH15, PUSH16, PUSH17, PUSH18, PUSH19, PUSH20, PUSH21, PUSH22, PUSH23, PUSH24, PUSH25, PUSH26, PUSH27, PUSH28, PUSH29, PUSH30, PUSH31, PUSH32: pc.Add(pc, ethutil.Big1) - a := int64(op) - int64(oPUSH1) + 1 + a := int64(op) - int64(PUSH1) + 1 data := script[pc.Int64() : pc.Int64()+a] val := ethutil.BigD(data) diff --git a/ethchain/types.go b/ethchain/types.go index e0fdd5191..293871143 100644 --- a/ethchain/types.go +++ b/ethchain/types.go @@ -5,206 +5,206 @@ type OpCode int // Op codes const ( // 0x0 range - arithmetic ops - oSTOP = 0x00 - oADD = 0x01 - oMUL = 0x02 - oSUB = 0x03 - oDIV = 0x04 - oSDIV = 0x05 - oMOD = 0x06 - oSMOD = 0x07 - oEXP = 0x08 - oNEG = 0x09 - oLT = 0x0a - oGT = 0x0b - oEQ = 0x0c - oNOT = 0x0d + STOP = 0x00 + ADD = 0x01 + MUL = 0x02 + SUB = 0x03 + DIV = 0x04 + SDIV = 0x05 + MOD = 0x06 + SMOD = 0x07 + EXP = 0x08 + NEG = 0x09 + LT = 0x0a + GT = 0x0b + EQ = 0x0c + NOT = 0x0d // 0x10 range - bit ops - oAND = 0x10 - oOR = 0x11 - oXOR = 0x12 - oBYTE = 0x13 + AND = 0x10 + OR = 0x11 + XOR = 0x12 + BYTE = 0x13 // 0x20 range - crypto - oSHA3 = 0x20 + SHA3 = 0x20 // 0x30 range - closure state - oADDRESS = 0x30 - oBALANCE = 0x31 - oORIGIN = 0x32 - oCALLER = 0x33 - oCALLVALUE = 0x34 - oCALLDATALOAD = 0x35 - oCALLDATASIZE = 0x36 - oGASPRICE = 0x37 + ADDRESS = 0x30 + BALANCE = 0x31 + ORIGIN = 0x32 + CALLER = 0x33 + CALLVALUE = 0x34 + CALLDATALOAD = 0x35 + CALLDATASIZE = 0x36 + GASPRICE = 0x37 // 0x40 range - block operations - oPREVHASH = 0x40 - oCOINBASE = 0x41 - oTIMESTAMP = 0x42 - oNUMBER = 0x43 - oDIFFICULTY = 0x44 - oGASLIMIT = 0x45 + PREVHASH = 0x40 + COINBASE = 0x41 + TIMESTAMP = 0x42 + NUMBER = 0x43 + DIFFICULTY = 0x44 + GASLIMIT = 0x45 // 0x50 range - 'storage' and execution - oPOP = 0x51 - oDUP = 0x52 - oSWAP = 0x53 - oMLOAD = 0x54 - oMSTORE = 0x55 - oMSTORE8 = 0x56 - oSLOAD = 0x57 - oSSTORE = 0x58 - oJUMP = 0x59 - oJUMPI = 0x5a - oPC = 0x5b - oMSIZE = 0x5c + POP = 0x51 + DUP = 0x52 + SWAP = 0x53 + MLOAD = 0x54 + MSTORE = 0x55 + MSTORE8 = 0x56 + SLOAD = 0x57 + SSTORE = 0x58 + JUMP = 0x59 + JUMPI = 0x5a + PC = 0x5b + MSIZE = 0x5c // 0x60 range - oPUSH1 = 0x60 - oPUSH2 = 0x61 - oPUSH3 = 0x62 - oPUSH4 = 0x63 - oPUSH5 = 0x64 - oPUSH6 = 0x65 - oPUSH7 = 0x66 - oPUSH8 = 0x67 - oPUSH9 = 0x68 - oPUSH10 = 0x69 - oPUSH11 = 0x6a - oPUSH12 = 0x6b - oPUSH13 = 0x6c - oPUSH14 = 0x6d - oPUSH15 = 0x6e - oPUSH16 = 0x6f - oPUSH17 = 0x70 - oPUSH18 = 0x71 - oPUSH19 = 0x72 - oPUSH20 = 0x73 - oPUSH21 = 0x74 - oPUSH22 = 0x75 - oPUSH23 = 0x76 - oPUSH24 = 0x77 - oPUSH25 = 0x78 - oPUSH26 = 0x79 - oPUSH27 = 0x7a - oPUSH28 = 0x7b - oPUSH29 = 0x7c - oPUSH30 = 0x7d - oPUSH31 = 0x7e - oPUSH32 = 0x7f + PUSH1 = 0x60 + PUSH2 = 0x61 + PUSH3 = 0x62 + PUSH4 = 0x63 + PUSH5 = 0x64 + PUSH6 = 0x65 + PUSH7 = 0x66 + PUSH8 = 0x67 + PUSH9 = 0x68 + PUSH10 = 0x69 + PUSH11 = 0x6a + PUSH12 = 0x6b + PUSH13 = 0x6c + PUSH14 = 0x6d + PUSH15 = 0x6e + PUSH16 = 0x6f + PUSH17 = 0x70 + PUSH18 = 0x71 + PUSH19 = 0x72 + PUSH20 = 0x73 + PUSH21 = 0x74 + PUSH22 = 0x75 + PUSH23 = 0x76 + PUSH24 = 0x77 + PUSH25 = 0x78 + PUSH26 = 0x79 + PUSH27 = 0x7a + PUSH28 = 0x7b + PUSH29 = 0x7c + PUSH30 = 0x7d + PUSH31 = 0x7e + PUSH32 = 0x7f // 0xf0 range - closures - oCREATE = 0xf0 - oCALL = 0xf1 - oRETURN = 0xf2 + CREATE = 0xf0 + CALL = 0xf1 + RETURN = 0xf2 // 0x70 range - other - oLOG = 0xfe // XXX Unofficial - oSUICIDE = 0xff + LOG = 0xfe // XXX Unofficial + SUICIDE = 0xff ) // Since the opcodes aren't all in order we can't use a regular slice var opCodeToString = map[OpCode]string{ // 0x0 range - arithmetic ops - oSTOP: "STOP", - oADD: "ADD", - oMUL: "MUL", - oSUB: "SUB", - oDIV: "DIV", - oSDIV: "SDIV", - oMOD: "MOD", - oSMOD: "SMOD", - oEXP: "EXP", - oNEG: "NEG", - oLT: "LT", - oGT: "GT", - oEQ: "EQ", - oNOT: "NOT", + STOP: "STOP", + ADD: "ADD", + MUL: "MUL", + SUB: "SUB", + DIV: "DIV", + SDIV: "SDIV", + MOD: "MOD", + SMOD: "SMOD", + EXP: "EXP", + NEG: "NEG", + LT: "LT", + GT: "GT", + EQ: "EQ", + NOT: "NOT", // 0x10 range - bit ops - oAND: "AND", - oOR: "OR", - oXOR: "XOR", - oBYTE: "BYTE", + AND: "AND", + OR: "OR", + XOR: "XOR", + BYTE: "BYTE", // 0x20 range - crypto - oSHA3: "SHA3", + SHA3: "SHA3", // 0x30 range - closure state - oADDRESS: "ADDRESS", - oBALANCE: "BALANCE", - oORIGIN: "ORIGIN", - oCALLER: "CALLER", - oCALLVALUE: "CALLVALUE", - oCALLDATALOAD: "CALLDATALOAD", - oCALLDATASIZE: "CALLDATASIZE", - oGASPRICE: "TXGASPRICE", + ADDRESS: "ADDRESS", + BALANCE: "BALANCE", + ORIGIN: "ORIGIN", + CALLER: "CALLER", + CALLVALUE: "CALLVALUE", + CALLDATALOAD: "CALLDATALOAD", + CALLDATASIZE: "CALLDATASIZE", + GASPRICE: "TXGASPRICE", // 0x40 range - block operations - oPREVHASH: "PREVHASH", - oCOINBASE: "COINBASE", - oTIMESTAMP: "TIMESTAMP", - oNUMBER: "NUMBER", - oDIFFICULTY: "DIFFICULTY", - oGASLIMIT: "GASLIMIT", + PREVHASH: "PREVHASH", + COINBASE: "COINBASE", + TIMESTAMP: "TIMESTAMP", + NUMBER: "NUMBER", + DIFFICULTY: "DIFFICULTY", + GASLIMIT: "GASLIMIT", // 0x50 range - 'storage' and execution - oDUP: "DUP", - oSWAP: "SWAP", - oMLOAD: "MLOAD", - oMSTORE: "MSTORE", - oMSTORE8: "MSTORE8", - oSLOAD: "SLOAD", - oSSTORE: "SSTORE", - oJUMP: "JUMP", - oJUMPI: "JUMPI", - oPC: "PC", - oMSIZE: "MSIZE", + DUP: "DUP", + SWAP: "SWAP", + MLOAD: "MLOAD", + MSTORE: "MSTORE", + MSTORE8: "MSTORE8", + SLOAD: "SLOAD", + SSTORE: "SSTORE", + JUMP: "JUMP", + JUMPI: "JUMPI", + PC: "PC", + MSIZE: "MSIZE", // 0x60 range - push - oPUSH1: "PUSH1", - oPUSH2: "PUSH2", - oPUSH3: "PUSH3", - oPUSH4: "PUSH4", - oPUSH5: "PUSH5", - oPUSH6: "PUSH6", - oPUSH7: "PUSH7", - oPUSH8: "PUSH8", - oPUSH9: "PUSH9", - oPUSH10: "PUSH10", - oPUSH11: "PUSH11", - oPUSH12: "PUSH12", - oPUSH13: "PUSH13", - oPUSH14: "PUSH14", - oPUSH15: "PUSH15", - oPUSH16: "PUSH16", - oPUSH17: "PUSH17", - oPUSH18: "PUSH18", - oPUSH19: "PUSH19", - oPUSH20: "PUSH20", - oPUSH21: "PUSH21", - oPUSH22: "PUSH22", - oPUSH23: "PUSH23", - oPUSH24: "PUSH24", - oPUSH25: "PUSH25", - oPUSH26: "PUSH26", - oPUSH27: "PUSH27", - oPUSH28: "PUSH28", - oPUSH29: "PUSH29", - oPUSH30: "PUSH30", - oPUSH31: "PUSH31", - oPUSH32: "PUSH32", + 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", // 0xf0 range - oCREATE: "CREATE", - oCALL: "CALL", - oRETURN: "RETURN", + CREATE: "CREATE", + CALL: "CALL", + RETURN: "RETURN", // 0x70 range - other - oLOG: "LOG", - oSUICIDE: "SUICIDE", + LOG: "LOG", + SUICIDE: "SUICIDE", } func (o OpCode) String() string { @@ -322,10 +322,3 @@ func IsOpCode(s string) bool { } return false } - -func AppendScript(init, script []byte) []byte { - s := append(init, byte(oRETURN)) - s = append(s, script...) - - return s -} -- cgit v1.2.3