aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/disasm
diff options
context:
space:
mode:
authorTaylor Gerring <taylor.gerring@gmail.com>2015-01-30 01:28:55 +0800
committerTaylor Gerring <taylor.gerring@gmail.com>2015-01-30 01:28:55 +0800
commit1cfea1113ac90b5214560ea6db923106f638c4b8 (patch)
tree5a539d60640da4ee4b1ddd62f703f715523c411a /cmd/disasm
parent726852e3d3ba5c2167bbdb3bdd3ecbaff6b4f242 (diff)
parent6488a392a347d0d47212fdc78386e3e0e5841d7d (diff)
downloaddexon-1cfea1113ac90b5214560ea6db923106f638c4b8.tar
dexon-1cfea1113ac90b5214560ea6db923106f638c4b8.tar.gz
dexon-1cfea1113ac90b5214560ea6db923106f638c4b8.tar.bz2
dexon-1cfea1113ac90b5214560ea6db923106f638c4b8.tar.lz
dexon-1cfea1113ac90b5214560ea6db923106f638c4b8.tar.xz
dexon-1cfea1113ac90b5214560ea6db923106f638c4b8.tar.zst
dexon-1cfea1113ac90b5214560ea6db923106f638c4b8.zip
Merge branch 'qt5.4' of github.com:ethereum/go-ethereum into qt5.4
Diffstat (limited to 'cmd/disasm')
-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()
+ }
+}