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
8cfbf183
Commit
8cfbf183
authored
Nov 04, 2014
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added JUMP analysis (WIP)
parent
78fb2af6
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
35 additions
and
0 deletions
+35
-0
analysis.go
vm/analysis.go
+35
-0
No files found.
vm/analysis.go
0 → 100644
View file @
8cfbf183
package
vm
import
(
"math/big"
"github.com/ethgo.old/ethutil"
)
func
analyseJumpDests
(
code
[]
byte
)
(
dests
map
[
int64
]
*
big
.
Int
)
{
dests
=
make
(
map
[
int64
]
*
big
.
Int
)
lp
:=
false
var
lpv
*
big
.
Int
for
pc
:=
int64
(
0
);
pc
<
int64
(
len
(
code
));
pc
++
{
var
op
OpCode
=
OpCode
(
code
[
pc
])
switch
op
{
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
:
a
:=
int64
(
op
)
-
int64
(
PUSH1
)
+
1
if
int64
(
len
(
code
))
>
pc
+
1
+
a
{
lpv
=
ethutil
.
BigD
(
code
[
pc
+
1
:
pc
+
1
+
a
])
}
pc
+=
a
lp
=
true
case
JUMP
,
JUMPI
:
if
lp
{
dests
[
pc
]
=
lpv
}
default
:
lp
=
false
}
}
return
}
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