Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
98d4b511
Commit
98d4b511
authored
May 28, 2014
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Changed opcode names
parent
ab8c7252
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
165 additions
and
172 deletions
+165
-172
asm.go
ethchain/asm.go
+2
-2
types.go
ethchain/types.go
+163
-170
No files found.
ethchain/asm.go
View file @
98d4b511
...
...
@@ -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
,
o
PUSH32
:
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
(
o
PUSH1
)
+
1
a
:=
int64
(
op
)
-
int64
(
PUSH1
)
+
1
data
:=
script
[
pc
.
Int64
()
:
pc
.
Int64
()
+
a
]
val
:=
ethutil
.
BigD
(
data
)
...
...
ethchain/types.go
View file @
98d4b511
...
...
@@ -5,206 +5,206 @@ type OpCode int
// Op codes
const
(
// 0x0 range - arithmetic ops
o
STOP
=
0x00
o
ADD
=
0x01
o
MUL
=
0x02
o
SUB
=
0x03
o
DIV
=
0x04
o
SDIV
=
0x05
o
MOD
=
0x06
o
SMOD
=
0x07
o
EXP
=
0x08
o
NEG
=
0x09
o
LT
=
0x0a
o
GT
=
0x0b
o
EQ
=
0x0c
o
NOT
=
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
o
AND
=
0x10
o
OR
=
0x11
o
XOR
=
0x12
o
BYTE
=
0x13
AND
=
0x10
OR
=
0x11
XOR
=
0x12
BYTE
=
0x13
// 0x20 range - crypto
o
SHA3
=
0x20
SHA3
=
0x20
// 0x30 range - closure state
o
ADDRESS
=
0x30
o
BALANCE
=
0x31
o
ORIGIN
=
0x32
o
CALLER
=
0x33
o
CALLVALUE
=
0x34
o
CALLDATALOAD
=
0x35
o
CALLDATASIZE
=
0x36
o
GASPRICE
=
0x37
ADDRESS
=
0x30
BALANCE
=
0x31
ORIGIN
=
0x32
CALLER
=
0x33
CALLVALUE
=
0x34
CALLDATALOAD
=
0x35
CALLDATASIZE
=
0x36
GASPRICE
=
0x37
// 0x40 range - block operations
o
PREVHASH
=
0x40
o
COINBASE
=
0x41
o
TIMESTAMP
=
0x42
o
NUMBER
=
0x43
o
DIFFICULTY
=
0x44
o
GASLIMIT
=
0x45
PREVHASH
=
0x40
COINBASE
=
0x41
TIMESTAMP
=
0x42
NUMBER
=
0x43
DIFFICULTY
=
0x44
GASLIMIT
=
0x45
// 0x50 range - 'storage' and execution
o
POP
=
0x51
o
DUP
=
0x52
o
SWAP
=
0x53
o
MLOAD
=
0x54
o
MSTORE
=
0x55
o
MSTORE8
=
0x56
o
SLOAD
=
0x57
o
SSTORE
=
0x58
o
JUMP
=
0x59
o
JUMPI
=
0x5a
o
PC
=
0x5b
o
MSIZE
=
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
o
PUSH1
=
0x60
o
PUSH2
=
0x61
o
PUSH3
=
0x62
o
PUSH4
=
0x63
o
PUSH5
=
0x64
o
PUSH6
=
0x65
o
PUSH7
=
0x66
o
PUSH8
=
0x67
o
PUSH9
=
0x68
o
PUSH10
=
0x69
o
PUSH11
=
0x6a
o
PUSH12
=
0x6b
o
PUSH13
=
0x6c
o
PUSH14
=
0x6d
o
PUSH15
=
0x6e
o
PUSH16
=
0x6f
o
PUSH17
=
0x70
o
PUSH18
=
0x71
o
PUSH19
=
0x72
o
PUSH20
=
0x73
o
PUSH21
=
0x74
o
PUSH22
=
0x75
o
PUSH23
=
0x76
o
PUSH24
=
0x77
o
PUSH25
=
0x78
o
PUSH26
=
0x79
o
PUSH27
=
0x7a
o
PUSH28
=
0x7b
o
PUSH29
=
0x7c
o
PUSH30
=
0x7d
o
PUSH31
=
0x7e
o
PUSH32
=
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
o
CREATE
=
0xf0
o
CALL
=
0xf1
o
RETURN
=
0xf2
CREATE
=
0xf0
CALL
=
0xf1
RETURN
=
0xf2
// 0x70 range - other
o
LOG
=
0xfe
// XXX Unofficial
o
SUICIDE
=
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
o
STOP
:
"STOP"
,
o
ADD
:
"ADD"
,
o
MUL
:
"MUL"
,
o
SUB
:
"SUB"
,
o
DIV
:
"DIV"
,
o
SDIV
:
"SDIV"
,
o
MOD
:
"MOD"
,
o
SMOD
:
"SMOD"
,
o
EXP
:
"EXP"
,
o
NEG
:
"NEG"
,
o
LT
:
"LT"
,
o
GT
:
"GT"
,
o
EQ
:
"EQ"
,
o
NOT
:
"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
o
AND
:
"AND"
,
o
OR
:
"OR"
,
o
XOR
:
"XOR"
,
o
BYTE
:
"BYTE"
,
AND
:
"AND"
,
OR
:
"OR"
,
XOR
:
"XOR"
,
BYTE
:
"BYTE"
,
// 0x20 range - crypto
o
SHA3
:
"SHA3"
,
SHA3
:
"SHA3"
,
// 0x30 range - closure state
o
ADDRESS
:
"ADDRESS"
,
o
BALANCE
:
"BALANCE"
,
o
ORIGIN
:
"ORIGIN"
,
o
CALLER
:
"CALLER"
,
o
CALLVALUE
:
"CALLVALUE"
,
o
CALLDATALOAD
:
"CALLDATALOAD"
,
o
CALLDATASIZE
:
"CALLDATASIZE"
,
o
GASPRICE
:
"TXGASPRICE"
,
ADDRESS
:
"ADDRESS"
,
BALANCE
:
"BALANCE"
,
ORIGIN
:
"ORIGIN"
,
CALLER
:
"CALLER"
,
CALLVALUE
:
"CALLVALUE"
,
CALLDATALOAD
:
"CALLDATALOAD"
,
CALLDATASIZE
:
"CALLDATASIZE"
,
GASPRICE
:
"TXGASPRICE"
,
// 0x40 range - block operations
o
PREVHASH
:
"PREVHASH"
,
o
COINBASE
:
"COINBASE"
,
o
TIMESTAMP
:
"TIMESTAMP"
,
o
NUMBER
:
"NUMBER"
,
o
DIFFICULTY
:
"DIFFICULTY"
,
o
GASLIMIT
:
"GASLIMIT"
,
PREVHASH
:
"PREVHASH"
,
COINBASE
:
"COINBASE"
,
TIMESTAMP
:
"TIMESTAMP"
,
NUMBER
:
"NUMBER"
,
DIFFICULTY
:
"DIFFICULTY"
,
GASLIMIT
:
"GASLIMIT"
,
// 0x50 range - 'storage' and execution
o
DUP
:
"DUP"
,
o
SWAP
:
"SWAP"
,
o
MLOAD
:
"MLOAD"
,
o
MSTORE
:
"MSTORE"
,
o
MSTORE8
:
"MSTORE8"
,
o
SLOAD
:
"SLOAD"
,
o
SSTORE
:
"SSTORE"
,
o
JUMP
:
"JUMP"
,
o
JUMPI
:
"JUMPI"
,
o
PC
:
"PC"
,
o
MSIZE
:
"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
o
PUSH1
:
"PUSH1"
,
o
PUSH2
:
"PUSH2"
,
o
PUSH3
:
"PUSH3"
,
o
PUSH4
:
"PUSH4"
,
o
PUSH5
:
"PUSH5"
,
o
PUSH6
:
"PUSH6"
,
o
PUSH7
:
"PUSH7"
,
o
PUSH8
:
"PUSH8"
,
o
PUSH9
:
"PUSH9"
,
o
PUSH10
:
"PUSH10"
,
o
PUSH11
:
"PUSH11"
,
o
PUSH12
:
"PUSH12"
,
o
PUSH13
:
"PUSH13"
,
o
PUSH14
:
"PUSH14"
,
o
PUSH15
:
"PUSH15"
,
o
PUSH16
:
"PUSH16"
,
o
PUSH17
:
"PUSH17"
,
o
PUSH18
:
"PUSH18"
,
o
PUSH19
:
"PUSH19"
,
o
PUSH20
:
"PUSH20"
,
o
PUSH21
:
"PUSH21"
,
o
PUSH22
:
"PUSH22"
,
o
PUSH23
:
"PUSH23"
,
o
PUSH24
:
"PUSH24"
,
o
PUSH25
:
"PUSH25"
,
o
PUSH26
:
"PUSH26"
,
o
PUSH27
:
"PUSH27"
,
o
PUSH28
:
"PUSH28"
,
o
PUSH29
:
"PUSH29"
,
o
PUSH30
:
"PUSH30"
,
o
PUSH31
:
"PUSH31"
,
o
PUSH32
:
"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
o
CREATE
:
"CREATE"
,
o
CALL
:
"CALL"
,
o
RETURN
:
"RETURN"
,
CREATE
:
"CREATE"
,
CALL
:
"CALL"
,
RETURN
:
"RETURN"
,
// 0x70 range - other
o
LOG
:
"LOG"
,
o
SUICIDE
:
"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
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment