mirror of https://github.com/ethereum/go-ethereum
Merge pull request #1077 from obscuren/disasm
core/vm, rpc: added disasm to `ext_` RPCpull/1073/merge
commit
b2b9b3b567
@ -0,0 +1,21 @@ |
|||||||
|
package vm |
||||||
|
|
||||||
|
import "fmt" |
||||||
|
|
||||||
|
func Disasm(code []byte) []string { |
||||||
|
var out []string |
||||||
|
for pc := uint64(0); pc < uint64(len(code)); pc++ { |
||||||
|
op := OpCode(code[pc]) |
||||||
|
out = append(out, op.String()) |
||||||
|
|
||||||
|
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 := uint64(op) - uint64(PUSH1) + 1 |
||||||
|
out = append(out, fmt.Sprintf("0x%x", code[pc+1:pc+1+a])) |
||||||
|
|
||||||
|
pc += a |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return out |
||||||
|
} |
Loading…
Reference in new issue