aboutsummaryrefslogtreecommitdiffstats
path: root/stack.go
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-01-17 01:13:17 +0800
committerobscuren <geffobscura@gmail.com>2014-01-17 01:13:17 +0800
commitfd7e79f4e3604435d87b21349c8dd31052ef8a78 (patch)
treef5fdcfcab2dac82f589047a8da9ba6b5b98ae41c /stack.go
parent8c4eca2490fc19a488ffb5fe1160a2ae695d018f (diff)
downloadgo-tangerine-fd7e79f4e3604435d87b21349c8dd31052ef8a78.tar.gz
go-tangerine-fd7e79f4e3604435d87b21349c8dd31052ef8a78.tar.zst
go-tangerine-fd7e79f4e3604435d87b21349c8dd31052ef8a78.zip
Added stack and opcodes to a separate file
Diffstat (limited to 'stack.go')
-rw-r--r--stack.go114
1 files changed, 59 insertions, 55 deletions
diff --git a/stack.go b/stack.go
index 2b2f075cf..cee98555b 100644
--- a/stack.go
+++ b/stack.go
@@ -6,59 +6,61 @@ import (
"math/big"
)
-type OpCode byte
+type OpCode int
// Op codes
const (
- oSTOP OpCode = 0x00
- oADD OpCode = 0x01
- oMUL OpCode = 0x02
- oSUB OpCode = 0x03
- oDIV OpCode = 0x04
- oSDIV OpCode = 0x05
- oMOD OpCode = 0x06
- oSMOD OpCode = 0x07
- oEXP OpCode = 0x08
- oNEG OpCode = 0x09
- oLT OpCode = 0x0a
- oLE OpCode = 0x0b
- oGT OpCode = 0x0c
- oGE OpCode = 0x0d
- oEQ OpCode = 0x0e
- oNOT OpCode = 0x0f
- oMYADDRESS OpCode = 0x10
- oTXSENDER OpCode = 0x11
- oTXVALUE OpCode = 0x12
- oTXFEE OpCode = 0x13
- oTXDATAN OpCode = 0x14
- oTXDATA OpCode = 0x15
- oBLK_PREVHASH OpCode = 0x16
- oBLK_COINBASE OpCode = 0x17
- oBLK_TIMESTAMP OpCode = 0x18
- oBLK_NUMBER OpCode = 0x19
- oBLK_DIFFICULTY OpCode = 0x1a
- oSHA256 OpCode = 0x20
- oRIPEMD160 OpCode = 0x21
- oECMUL OpCode = 0x22
- oECADD OpCode = 0x23
- oECSIGN OpCode = 0x24
- oECRECOVER OpCode = 0x25
- oECVALID OpCode = 0x26
- oPUSH OpCode = 0x30
- oPOP OpCode = 0x31
- oDUP OpCode = 0x32
- oDUPN OpCode = 0x33
- oSWAP OpCode = 0x34
- oSWAPN OpCode = 0x35
- oLOAD OpCode = 0x36
- oSTORE OpCode = 0x37
- oJMP OpCode = 0x40
- oJMPI OpCode = 0x41
- oIND OpCode = 0x42
- oEXTRO OpCode = 0x50
- oBALANCE OpCode = 0x51
- oMKTX OpCode = 0x60
- oSUICIDE OpCode = 0xff
+ oSTOP OpCode = iota
+ oADD
+ oMUL
+ oSUB
+ oDIV
+ oSDIV
+ oMOD
+ oSMOD
+ oEXP
+ oNEG
+ oLT
+ oLE
+ oGT
+ oGE
+ oEQ
+ oNOT
+ oMYADDRESS
+ oTXSENDER
+ oTXVALUE
+ oTXFEE
+ oTXDATAN
+ oTXDATA
+ oBLK_PREVHASH
+ oBLK_COINBASE
+ oBLK_TIMESTAMP
+ oBLK_NUMBER
+ oBLK_DIFFICULTY
+ oBASEFEE
+ oSHA256 OpCode = 32
+ oRIPEMD160 OpCode = 33
+ oECMUL OpCode = 34
+ oECADD OpCode = 35
+ oECSIGN OpCode = 36
+ oECRECOVER OpCode = 37
+ oECVALID OpCode = 38
+ oSHA3 OpCode = 39
+ oPUSH OpCode = 48
+ oPOP OpCode = 49
+ oDUP OpCode = 50
+ oSWAP OpCode = 51
+ oMLOAD OpCode = 52
+ oMSTORE OpCode = 53
+ oSLOAD OpCode = 54
+ oSSTORE OpCode = 55
+ oJMP OpCode = 56
+ oJMPI OpCode = 57
+ oIND OpCode = 58
+ oEXTRO OpCode = 59
+ oBALANCE OpCode = 60
+ oMKTX OpCode = 61
+ oSUICIDE OpCode = 62
)
// Since the opcodes aren't all in order we can't use a regular slice
@@ -89,7 +91,8 @@ var opCodeToString = map[OpCode]string{
oBLK_COINBASE: "BLK_COINBASE",
oBLK_TIMESTAMP: "BLK_TIMESTAMP",
oBLK_NUMBER: "BLK_NUMBER",
- oBLK_DIFFICULTY: "BLK_DIFFIFULTY",
+ oBLK_DIFFICULTY: "BLK_DIFFICULTY",
+ oBASEFEE: "BASEFEE",
oSHA256: "SHA256",
oRIPEMD160: "RIPEMD160",
oECMUL: "ECMUL",
@@ -97,14 +100,15 @@ var opCodeToString = map[OpCode]string{
oECSIGN: "ECSIGN",
oECRECOVER: "ECRECOVER",
oECVALID: "ECVALID",
+ oSHA3: "SHA3",
oPUSH: "PUSH",
oPOP: "POP",
oDUP: "DUP",
- oDUPN: "DUPN",
oSWAP: "SWAP",
- oSWAPN: "SWAPN",
- oLOAD: "LOAD",
- oSTORE: "STORE",
+ oMLOAD: "MLOAD",
+ oMSTORE: "MSTORE",
+ oSLOAD: "SLOAD",
+ oSSTORE: "SSTORE",
oJMP: "JMP",
oJMPI: "JMPI",
oIND: "IND",