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
b20c0b1d
Commit
b20c0b1d
authored
Feb 21, 2014
by
obscuren
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Removed all old code
parent
f2a12602
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
67 additions
and
74 deletions
+67
-74
parsing.go
ethutil/parsing.go
+67
-74
No files found.
ethutil/parsing.go
View file @
b20c0b1d
package
ethutil
import
(
"errors"
"fmt"
"math/big"
"strconv"
"strings"
)
// Op codes
var
OpCodes
=
map
[
string
]
string
{
"STOP"
:
"0"
,
"ADD"
:
"1"
,
"MUL"
:
"2"
,
"SUB"
:
"3"
,
"DIV"
:
"4"
,
"SDIV"
:
"5"
,
"MOD"
:
"6"
,
"SMOD"
:
"7"
,
"EXP"
:
"8"
,
"NEG"
:
"9"
,
"LT"
:
"10"
,
"LE"
:
"11"
,
"GT"
:
"12"
,
"GE"
:
"13"
,
"EQ"
:
"14"
,
"NOT"
:
"15"
,
"MYADDRESS"
:
"16"
,
"TXSENDER"
:
"17"
,
"PUSH"
:
"48"
,
"POP"
:
"49"
,
"LOAD"
:
"54"
,
var
OpCodes
=
map
[
string
]
byte
{
"STOP"
:
0
,
"ADD"
:
1
,
"MUL"
:
2
,
"SUB"
:
3
,
"DIV"
:
4
,
"SDIV"
:
5
,
"MOD"
:
6
,
"SMOD"
:
7
,
"EXP"
:
8
,
"NEG"
:
9
,
"LT"
:
10
,
"LE"
:
11
,
"GT"
:
12
,
"GE"
:
13
,
"EQ"
:
14
,
"NOT"
:
15
,
"MYADDRESS"
:
16
,
"TXSENDER"
:
17
,
"TXVALUE"
:
18
,
"TXFEE"
:
19
,
"TXDATAN"
:
20
,
"TXDATA"
:
21
,
"BLK_PREVHASH"
:
22
,
"BLK_COINBASE"
:
23
,
"BLK_TIMESTAMP"
:
24
,
"BLK_NUMBER"
:
25
,
"BLK_DIFFICULTY"
:
26
,
"BASEFEE"
:
27
,
"SHA256"
:
32
,
"RIPEMD160"
:
33
,
"ECMUL"
:
34
,
"ECADD"
:
35
,
"ECSIGN"
:
36
,
"ECRECOVER"
:
37
,
"ECVALID"
:
38
,
"SHA3"
:
39
,
"PUSH"
:
48
,
"POP"
:
49
,
"DUP"
:
50
,
"SWAP"
:
51
,
"MLOAD"
:
52
,
"MSTORE"
:
53
,
"SLOAD"
:
54
,
"SSTORE"
:
55
,
"JMP"
:
56
,
"JMPI"
:
57
,
"IND"
:
58
,
"EXTRO"
:
59
,
"BALANCE"
:
60
,
"MKTX"
:
61
,
"SUICIDE"
:
62
,
}
func
CompileInstr
(
s
string
)
(
string
,
error
)
{
tokens
:=
strings
.
Split
(
s
,
" "
)
if
OpCodes
[
tokens
[
0
]]
==
""
{
return
s
,
errors
.
New
(
fmt
.
Sprintf
(
"OP not found: %s"
,
tokens
[
0
]))
func
IsOpCode
(
s
string
)
bool
{
for
key
,
_
:=
range
OpCodes
{
if
key
==
s
{
return
true
}
}
return
false
}
code
:=
OpCodes
[
tokens
[
0
]]
// Replace op codes with the proper numerical equivalent
op
:=
new
(
big
.
Int
)
op
.
SetString
(
code
,
0
)
args
:=
make
([]
*
big
.
Int
,
6
)
for
i
,
val
:=
range
tokens
[
1
:
len
(
tokens
)]
{
num
:=
new
(
big
.
Int
)
num
.
SetString
(
val
,
0
)
args
[
i
]
=
num
}
// Big int equation = op + x * 256 + y * 256**2 + z * 256**3 + a * 256**4 + b * 256**5 + c * 256**6
base
:=
new
(
big
.
Int
)
x
:=
new
(
big
.
Int
)
y
:=
new
(
big
.
Int
)
z
:=
new
(
big
.
Int
)
a
:=
new
(
big
.
Int
)
b
:=
new
(
big
.
Int
)
c
:=
new
(
big
.
Int
)
if
args
[
0
]
!=
nil
{
x
.
Mul
(
args
[
0
],
big
.
NewInt
(
256
))
}
if
args
[
1
]
!=
nil
{
y
.
Mul
(
args
[
1
],
BigPow
(
256
,
2
))
}
if
args
[
2
]
!=
nil
{
z
.
Mul
(
args
[
2
],
BigPow
(
256
,
3
))
}
if
args
[
3
]
!=
nil
{
a
.
Mul
(
args
[
3
],
BigPow
(
256
,
4
))
}
if
args
[
4
]
!=
nil
{
b
.
Mul
(
args
[
4
],
BigPow
(
256
,
5
))
}
if
args
[
5
]
!=
nil
{
c
.
Mul
(
args
[
5
],
BigPow
(
256
,
6
))
func
CompileInstr
(
s
string
)
([]
byte
,
error
)
{
isOp
:=
IsOpCode
(
s
)
if
isOp
{
return
[]
byte
{
OpCodes
[
s
]},
nil
}
base
.
Add
(
op
,
x
)
base
.
Add
(
base
,
y
)
base
.
Add
(
base
,
z
)
base
.
Add
(
base
,
a
)
base
.
Add
(
base
,
b
)
base
.
Add
(
base
,
c
)
num
:=
new
(
big
.
Int
)
num
.
SetString
(
s
,
0
)
return
base
.
String
(),
nil
return
num
.
Bytes
(),
nil
}
func
Instr
(
instr
string
)
(
int
,
[]
string
,
error
)
{
base
:=
new
(
big
.
Int
)
base
.
SetString
(
instr
,
0
)
...
...
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