From 0330077d76b48934ab024a309000f83c78047d8a Mon Sep 17 00:00:00 2001 From: obscuren Date: Mon, 23 Mar 2015 16:59:09 +0100 Subject: moved state and vm to core --- core/vm/analysis.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 core/vm/analysis.go (limited to 'core/vm/analysis.go') diff --git a/core/vm/analysis.go b/core/vm/analysis.go new file mode 100644 index 000000000..411df5686 --- /dev/null +++ b/core/vm/analysis.go @@ -0,0 +1,20 @@ +package vm + +import "gopkg.in/fatih/set.v0" + +func analyseJumpDests(code []byte) (dests *set.Set) { + dests = set.New() + + for pc := uint64(0); pc < uint64(len(code)); pc++ { + var op OpCode = OpCode(code[pc]) + switch op { + case PUSH1, PUSH2, PUSH3, PUSH4, PUSH5, PUSH6, PUSH7, PUSH8, PUSH9, PUSH10, PUSH11, PUSH12, PUSH13, PUSH14, PUSH15, PUSH16, PUSH17, PUSH18, PUSH19, PUSH20, PUSH21, PUSH22, PUSH23, PUSH24, PUSH25, PUSH26, PUSH27, PUSH28, PUSH29, PUSH30, PUSH31, PUSH32: + a := uint64(op) - uint64(PUSH1) + 1 + + pc += a + case JUMPDEST: + dests.Add(pc) + } + } + return +} -- cgit v1.2.3