Added stack and opcodes to a separate file

This commit is contained in:
obscuren 2014-01-16 18:13:17 +01:00
parent 8c4eca2490
commit fd7e79f4e3
1 changed files with 59 additions and 55 deletions

114
stack.go
View File

@ -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",