aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/disasm
diff options
context:
space:
mode:
authorTaylor Gerring <taylor.gerring@gmail.com>2015-02-02 21:22:20 +0800
committerTaylor Gerring <taylor.gerring@gmail.com>2015-02-02 21:22:20 +0800
commit1e60919d47ac2767706c135332a1a4f79bbf3960 (patch)
tree3db2f5d5446f451d700bf67ef756d85da0fdda25 /cmd/disasm
parent313cfba7d43529db647789ae826bc426d9da7de3 (diff)
parent0d97c3ce1322083fb9683a5afec004b2626b620a (diff)
downloaddexon-1e60919d47ac2767706c135332a1a4f79bbf3960.tar
dexon-1e60919d47ac2767706c135332a1a4f79bbf3960.tar.gz
dexon-1e60919d47ac2767706c135332a1a4f79bbf3960.tar.bz2
dexon-1e60919d47ac2767706c135332a1a4f79bbf3960.tar.lz
dexon-1e60919d47ac2767706c135332a1a4f79bbf3960.tar.xz
dexon-1e60919d47ac2767706c135332a1a4f79bbf3960.tar.zst
dexon-1e60919d47ac2767706c135332a1a4f79bbf3960.zip
Merge pull request #3 from ethereum/develop
Update to develop
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()
+ }
+}