From 37511ec5207b46829226b94e7c0da6a74609dd2a Mon Sep 17 00:00:00 2001 From: Valentin Wüstholz Date: Mon, 27 Feb 2017 12:21:19 +0100 Subject: core, core/vm, cmd/disasm: unify procedures for disassembling evm code (#3530) --- core/asm.go | 64 ------------------------------------------------------------- 1 file changed, 64 deletions(-) delete mode 100644 core/asm.go (limited to 'core/asm.go') diff --git a/core/asm.go b/core/asm.go deleted file mode 100644 index b2e47b5e9..000000000 --- a/core/asm.go +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2014 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -package core - -import ( - "fmt" - "math/big" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/vm" -) - -func Disassemble(script []byte) (asm []string) { - pc := new(big.Int) - for { - if pc.Cmp(big.NewInt(int64(len(script)))) >= 0 { - return - } - - // Get the memory location of pc - val := script[pc.Int64()] - // Get the opcode (it must be an opcode!) - op := vm.OpCode(val) - - asm = append(asm, fmt.Sprintf("%04v: %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: - pc.Add(pc, common.Big1) - a := int64(op) - int64(vm.PUSH1) + 1 - if int(pc.Int64()+a) > len(script) { - return - } - - data := script[pc.Int64() : pc.Int64()+a] - if len(data) == 0 { - data = []byte{0} - } - asm = append(asm, fmt.Sprintf("%04v: 0x%x", pc, data)) - - pc.Add(pc, big.NewInt(a-1)) - } - - pc.Add(pc, common.Big1) - } -} -- cgit