aboutsummaryrefslogtreecommitdiffstats
path: root/ethchain
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-09-18 22:48:42 +0800
committerobscuren <geffobscura@gmail.com>2014-09-18 22:48:42 +0800
commit863785a52046bcfbbcaa57c83b4b43c215368760 (patch)
treec5612bcf9577d03c8bedac85512ff68449257ca1 /ethchain
parentf3a93b046e45a293b673a955959666ec5389c4eb (diff)
downloadgo-tangerine-863785a52046bcfbbcaa57c83b4b43c215368760.tar
go-tangerine-863785a52046bcfbbcaa57c83b4b43c215368760.tar.gz
go-tangerine-863785a52046bcfbbcaa57c83b4b43c215368760.tar.bz2
go-tangerine-863785a52046bcfbbcaa57c83b4b43c215368760.tar.lz
go-tangerine-863785a52046bcfbbcaa57c83b4b43c215368760.tar.xz
go-tangerine-863785a52046bcfbbcaa57c83b4b43c215368760.tar.zst
go-tangerine-863785a52046bcfbbcaa57c83b4b43c215368760.zip
Updated opcodes
Diffstat (limited to 'ethchain')
-rw-r--r--ethchain/types.go244
1 files changed, 106 insertions, 138 deletions
diff --git a/ethchain/types.go b/ethchain/types.go
index 9e7269f74..45486b06c 100644
--- a/ethchain/types.go
+++ b/ethchain/types.go
@@ -27,10 +27,12 @@ const (
NOT = 0x0f
// 0x10 range - bit ops
- AND = 0x10
- OR = 0x11
- XOR = 0x12
- BYTE = 0x13
+ AND = 0x10
+ OR = 0x11
+ XOR = 0x12
+ BYTE = 0x13
+ ADDMOD = 0x14
+ MULMOD = 0x15
// 0x20 range - crypto
SHA3 = 0x20
@@ -47,6 +49,8 @@ const (
CODESIZE = 0x38
CODECOPY = 0x39
GASPRICE = 0x3a
+ EXTCODECOPY = 0x3b
+ EXTCODESIZE = 0x3c
// 0x40 range - block operations
PREVHASH = 0x40
@@ -57,9 +61,9 @@ const (
GASLIMIT = 0x45
// 0x50 range - 'storage' and execution
- POP = 0x50
- DUP = 0x51
- SWAP = 0x52
+ POP = 0x50
+ //DUP = 0x51
+ //SWAP = 0x52
MLOAD = 0x53
MSTORE = 0x54
MSTORE8 = 0x55
@@ -105,10 +109,46 @@ const (
PUSH31 = 0x7e
PUSH32 = 0x7f
+ DUP1 = 0x80
+ DUP2 = 0x81
+ DUP3 = 0x82
+ DUP4 = 0x83
+ DUP5 = 0x84
+ DUP6 = 0x85
+ DUP7 = 0x86
+ DUP8 = 0x87
+ DUP9 = 0x88
+ DUP10 = 0x89
+ DUP11 = 0x8a
+ DUP12 = 0x8b
+ DUP13 = 0x8c
+ DUP14 = 0x8d
+ DUP15 = 0x8e
+ DUP16 = 0x8f
+
+ SWAP1 = 0x90
+ SWAP2 = 0x91
+ SWAP3 = 0x92
+ SWAP4 = 0x93
+ SWAP5 = 0x94
+ SWAP6 = 0x95
+ SWAP7 = 0x96
+ SWAP8 = 0x97
+ SWAP9 = 0x98
+ SWAP10 = 0x99
+ SWAP11 = 0x9a
+ SWAP12 = 0x9b
+ SWAP13 = 0x9c
+ SWAP14 = 0x9d
+ SWAP15 = 0x9e
+ SWAP16 = 0x9f
+
// 0xf0 range - closures
- CREATE = 0xf0
- CALL = 0xf1
- RETURN = 0xf2
+ CREATE = 0xf0
+ CALL = 0xf1
+ RETURN = 0xf2
+ POST = 0xf3
+ CALLSTATELESS = 0xf4
// 0x70 range - other
LOG = 0xfe // XXX Unofficial
@@ -136,10 +176,12 @@ var opCodeToString = map[OpCode]string{
NOT: "NOT",
// 0x10 range - bit ops
- AND: "AND",
- OR: "OR",
- XOR: "XOR",
- BYTE: "BYTE",
+ AND: "AND",
+ OR: "OR",
+ XOR: "XOR",
+ BYTE: "BYTE",
+ ADDMOD: "ADDMOD",
+ MULMOD: "MULMOD",
// 0x20 range - crypto
SHA3: "SHA3",
@@ -158,17 +200,19 @@ var opCodeToString = map[OpCode]string{
GASPRICE: "TXGASPRICE",
// 0x40 range - block operations
- PREVHASH: "PREVHASH",
- COINBASE: "COINBASE",
- TIMESTAMP: "TIMESTAMP",
- NUMBER: "NUMBER",
- DIFFICULTY: "DIFFICULTY",
- GASLIMIT: "GASLIMIT",
+ PREVHASH: "PREVHASH",
+ COINBASE: "COINBASE",
+ TIMESTAMP: "TIMESTAMP",
+ NUMBER: "NUMBER",
+ DIFFICULTY: "DIFFICULTY",
+ GASLIMIT: "GASLIMIT",
+ EXTCODESIZE: "EXTCODESIZE",
+ EXTCODECOPY: "EXTCODECOPY",
// 0x50 range - 'storage' and execution
- POP: "POP",
- DUP: "DUP",
- SWAP: "SWAP",
+ POP: "POP",
+ //DUP: "DUP",
+ //SWAP: "SWAP",
MLOAD: "MLOAD",
MSTORE: "MSTORE",
MSTORE8: "MSTORE8",
@@ -214,10 +258,46 @@ var opCodeToString = map[OpCode]string{
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",
+
// 0xf0 range
- CREATE: "CREATE",
- CALL: "CALL",
- RETURN: "RETURN",
+ CREATE: "CREATE",
+ CALL: "CALL",
+ RETURN: "RETURN",
+ POST: "POST",
+ CALLSTATELESS: "CALLSTATELESS",
// 0x70 range - other
LOG: "LOG",
@@ -232,115 +312,3 @@ func (o OpCode) String() string {
return str
}
-
-// Op codes for assembling
-var OpCodes = map[string]byte{
- // 0x0 range - arithmetic ops
- "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
- "AND": 0x10,
- "OR": 0x11,
- "XOR": 0x12,
- "BYTE": 0x13,
-
- // 0x20 range - crypto
- "SHA3": 0x20,
-
- // 0x30 range - closure state
- "ADDRESS": 0x30,
- "BALANCE": 0x31,
- "ORIGIN": 0x32,
- "CALLER": 0x33,
- "CALLVALUE": 0x34,
- "CALLDATALOAD": 0x35,
- "CALLDATASIZE": 0x36,
- "GASPRICE": 0x38,
-
- // 0x40 range - block operations
- "PREVHASH": 0x40,
- "COINBASE": 0x41,
- "TIMESTAMP": 0x42,
- "NUMBER": 0x43,
- "DIFFICULTY": 0x44,
- "GASLIMIT": 0x45,
-
- // 0x50 range - 'storage' and execution
- "POP": 0x51,
- "DUP": 0x52,
- "SWAP": 0x53,
- "MLOAD": 0x54,
- "MSTORE": 0x55,
- "MSTORE8": 0x56,
- "SLOAD": 0x57,
- "SSTORE": 0x58,
- "JUMP": 0x59,
- "JUMPI": 0x5a,
- "PC": 0x5b,
- "MSIZE": 0x5c,
-
- // 0x70 range - 'push'
- "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": 0x70,
- "PUSH27": 0x7a,
- "PUSH28": 0x7b,
- "PUSH29": 0x7c,
- "PUSH30": 0x7d,
- "PUSH31": 0x7e,
- "PUSH32": 0x7f,
-
- // 0xf0 range - closures
- "CREATE": 0xf0,
- "CALL": 0xf1,
- "RETURN": 0xf2,
-
- // 0x70 range - other
- "LOG": 0xfe,
- "SUICIDE": 0x7f,
-}
-
-func IsOpCode(s string) bool {
- for key, _ := range OpCodes {
- if key == s {
- return true
- }
- }
- return false
-}