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