aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/disasm/main.go
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/main.go
parent726852e3d3ba5c2167bbdb3bdd3ecbaff6b4f242 (diff)
parent6488a392a347d0d47212fdc78386e3e0e5841d7d (diff)
downloadgo-tangerine-1cfea1113ac90b5214560ea6db923106f638c4b8.tar
go-tangerine-1cfea1113ac90b5214560ea6db923106f638c4b8.tar.gz
go-tangerine-1cfea1113ac90b5214560ea6db923106f638c4b8.tar.bz2
go-tangerine-1cfea1113ac90b5214560ea6db923106f638c4b8.tar.lz
go-tangerine-1cfea1113ac90b5214560ea6db923106f638c4b8.tar.xz
go-tangerine-1cfea1113ac90b5214560ea6db923106f638c4b8.tar.zst
go-tangerine-1cfea1113ac90b5214560ea6db923106f638c4b8.zip
Merge branch 'qt5.4' of github.com:ethereum/go-ethereum into qt5.4
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()
+ }
+}