diff options
author | Taylor Gerring <taylor.gerring@gmail.com> | 2015-01-30 01:28:55 +0800 |
---|---|---|
committer | Taylor Gerring <taylor.gerring@gmail.com> | 2015-01-30 01:28:55 +0800 |
commit | 1cfea1113ac90b5214560ea6db923106f638c4b8 (patch) | |
tree | 5a539d60640da4ee4b1ddd62f703f715523c411a /cmd/disasm | |
parent | 726852e3d3ba5c2167bbdb3bdd3ecbaff6b4f242 (diff) | |
parent | 6488a392a347d0d47212fdc78386e3e0e5841d7d (diff) | |
download | dexon-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.go | 34 |
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() + } +} |