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
a289a77d
Commit
a289a77d
authored
Aug 21, 2014
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
DUP n SWAP n
parent
3def9258
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
59 additions
and
9 deletions
+59
-9
stack.go
ethvm/stack.go
+12
-0
types.go
ethvm/types.go
+34
-0
vm.go
ethvm/vm.go
+12
-8
peer.go
peer.go
+1
-1
No files found.
ethvm/stack.go
View file @
a289a77d
...
...
@@ -64,6 +64,18 @@ func (st *Stack) Peekn() (*big.Int, *big.Int) {
return
ints
[
0
],
ints
[
1
]
}
func
(
st
*
Stack
)
Swapn
(
n
int
)
(
*
big
.
Int
,
*
big
.
Int
)
{
st
.
data
[
n
],
st
.
data
[
0
]
=
st
.
data
[
0
],
st
.
data
[
n
]
return
st
.
data
[
n
],
st
.
data
[
0
]
}
func
(
st
*
Stack
)
Dupn
(
n
int
)
*
big
.
Int
{
st
.
Push
(
st
.
data
[
n
])
return
st
.
Peek
()
}
func
(
st
*
Stack
)
Push
(
d
*
big
.
Int
)
{
st
.
data
=
append
(
st
.
data
,
new
(
big
.
Int
)
.
Set
(
d
))
}
...
...
ethvm/types.go
View file @
a289a77d
...
...
@@ -105,6 +105,40 @@ 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
...
...
ethvm/vm.go
View file @
a289a77d
...
...
@@ -600,16 +600,20 @@ func (self *Vm) RunClosure(closure *Closure) (ret []byte, err error) {
case
POP
:
require
(
1
)
stack
.
Pop
()
case
DUP
:
require
(
1
)
stack
.
Push
(
stack
.
Peek
())
case
DUP1
,
DUP2
,
DUP3
,
DUP4
,
DUP5
,
DUP6
,
DUP7
,
DUP8
,
DUP9
,
DUP10
,
DUP11
,
DUP12
,
DUP13
,
DUP14
,
DUP15
,
DUP16
:
n
:=
int
(
op
-
DUP1
+
1
)
stack
.
Dupn
(
n
)
self
.
Printf
(
" => [%d] 0x%x"
,
n
,
stack
.
Peek
()
.
Bytes
())
case
SWAP1
,
SWAP2
,
SWAP3
,
SWAP4
,
SWAP5
,
SWAP6
,
SWAP7
,
SWAP8
,
SWAP9
,
SWAP10
,
SWAP11
,
SWAP12
,
SWAP13
,
SWAP14
,
SWAP15
,
SWAP16
:
n
:=
int
(
op
-
SWAP1
+
1
)
x
,
y
:=
stack
.
Swapn
(
n
)
self
.
Printf
(
" => 0x%x"
,
stack
.
Peek
()
.
Bytes
())
self
.
Printf
(
" => [%d] %x [0] %x"
,
n
,
x
.
Bytes
(),
y
.
Bytes
())
case
DUP
:
// NOP
case
SWAP
:
require
(
2
)
x
,
y
:=
stack
.
Popn
()
stack
.
Push
(
y
)
stack
.
Push
(
x
)
// NOP
case
MLOAD
:
require
(
1
)
offset
:=
stack
.
Pop
()
...
...
peer.go
View file @
a289a77d
...
...
@@ -24,7 +24,7 @@ const (
// The size of the output buffer for writing messages
outputBufferSize
=
50
// Current protocol version
ProtocolVersion
=
2
7
ProtocolVersion
=
2
8
// Interval for ping/pong message
pingPongTimer
=
2
*
time
.
Second
)
...
...
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