aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/disasm/main.go
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-02-21 01:13:46 +0800
committerobscuren <geffobscura@gmail.com>2015-02-21 01:13:46 +0800
commitbd7ebbcd5b77ce4fdd471b44f0acda80f2b3ceca (patch)
tree46ab5943fd5e26198067aeec4a44287452eb2a32 /cmd/disasm/main.go
parent771bfe9e78f9952002a71cccc8d41c8c544fdfcb (diff)
parentd586a633ff005ac01c9f1eb33552d147cf6c883e (diff)
downloaddexon-bd7ebbcd5b77ce4fdd471b44f0acda80f2b3ceca.tar
dexon-bd7ebbcd5b77ce4fdd471b44f0acda80f2b3ceca.tar.gz
dexon-bd7ebbcd5b77ce4fdd471b44f0acda80f2b3ceca.tar.bz2
dexon-bd7ebbcd5b77ce4fdd471b44f0acda80f2b3ceca.tar.lz
dexon-bd7ebbcd5b77ce4fdd471b44f0acda80f2b3ceca.tar.xz
dexon-bd7ebbcd5b77ce4fdd471b44f0acda80f2b3ceca.tar.zst
dexon-bd7ebbcd5b77ce4fdd471b44f0acda80f2b3ceca.zip
Merge branch 'release/0.9.0'
Diffstat (limited to 'cmd/disasm/main.go')
-rw-r--r--cmd/disasm/main.go34
1 files changed, 34 insertions, 0 deletions
diff --git a/cmd/disasm/main.go b/cmd/disasm/main.go
new file mode 100644
index 000000000..c07246b00
--- /dev/null
+++ b/cmd/disasm/main.go
@@ -0,0 +1,34 @@
+package main
+
+import (
+ "fmt"
+ "io/ioutil"
+ "os"
+
+ "github.com/ethereum/go-ethereum/ethutil"
+ "github.com/ethereum/go-ethereum/vm"
+)
+
+func main() {
+ code, err := ioutil.ReadAll(os.Stdin)
+ if err != nil {
+ fmt.Println(err)
+ os.Exit(1)
+ }
+ code = ethutil.Hex2Bytes(string(code[:len(code)-1]))
+ fmt.Printf("%x\n", code)
+
+ for pc := uint64(0); pc < uint64(len(code)); pc++ {
+ op := vm.OpCode(code[pc])
+ fmt.Printf("%-5d %v", pc, op)
+
+ switch op {
+ case vm.PUSH1, vm.PUSH2, vm.PUSH3, vm.PUSH4, vm.PUSH5, vm.PUSH6, vm.PUSH7, vm.PUSH8, vm.PUSH9, vm.PUSH10, vm.PUSH11, vm.PUSH12, vm.PUSH13, vm.PUSH14, vm.PUSH15, vm.PUSH16, vm.PUSH17, vm.PUSH18, vm.PUSH19, vm.PUSH20, vm.PUSH21, vm.PUSH22, vm.PUSH23, vm.PUSH24, vm.PUSH25, vm.PUSH26, vm.PUSH27, vm.PUSH28, vm.PUSH29, vm.PUSH30, vm.PUSH31, vm.PUSH32:
+ a := uint64(op) - uint64(vm.PUSH1) + 1
+ fmt.Printf(" => %x", code[pc+1:pc+1+a])
+
+ pc += a
+ }
+ fmt.Println()
+ }
+}