diff options
author | obscuren <geffobscura@gmail.com> | 2014-05-08 20:20:06 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2014-05-08 20:20:06 +0800 |
commit | 554f4f6f7d8b8bc5332d42631ec9de0d7015eccf (patch) | |
tree | 7d68f54fb31700d7ab6b7d41395701f855c4183f /ethchain/asm.go | |
parent | 6c66cb3fa9d73fbb9f570a3f1b7f7dcd24ee2b7f (diff) | |
download | go-tangerine-554f4f6f7d8b8bc5332d42631ec9de0d7015eccf.tar go-tangerine-554f4f6f7d8b8bc5332d42631ec9de0d7015eccf.tar.gz go-tangerine-554f4f6f7d8b8bc5332d42631ec9de0d7015eccf.tar.bz2 go-tangerine-554f4f6f7d8b8bc5332d42631ec9de0d7015eccf.tar.lz go-tangerine-554f4f6f7d8b8bc5332d42631ec9de0d7015eccf.tar.xz go-tangerine-554f4f6f7d8b8bc5332d42631ec9de0d7015eccf.tar.zst go-tangerine-554f4f6f7d8b8bc5332d42631ec9de0d7015eccf.zip |
Fixed disasamble for all pushes
Diffstat (limited to 'ethchain/asm.go')
-rw-r--r-- | ethchain/asm.go | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/ethchain/asm.go b/ethchain/asm.go index d46e46af7..492be0999 100644 --- a/ethchain/asm.go +++ b/ethchain/asm.go @@ -21,9 +21,10 @@ func Disassemble(script []byte) (asm []string) { asm = append(asm, fmt.Sprintf("%v", op)) switch op { - case oPUSH32: // Push PC+1 on to the stack + case oPUSH1, oPUSH2, oPUSH3, oPUSH4, oPUSH5, oPUSH6, oPUSH7, oPUSH8, oPUSH9, oPUSH10, oPUSH11, oPUSH12, oPUSH13, oPUSH14, oPUSH15, oPUSH16, oPUSH17, oPUSH18, oPUSH19, oPUSH20, oPUSH21, oPUSH22, oPUSH23, oPUSH24, oPUSH25, oPUSH26, oPUSH27, oPUSH28, oPUSH29, oPUSH30, oPUSH31, oPUSH32: pc.Add(pc, ethutil.Big1) - data := script[pc.Int64() : pc.Int64()+32] + a := int64(op) - int64(oPUSH1) + 1 + data := script[pc.Int64() : pc.Int64()+a] val := ethutil.BigD(data) var b []byte @@ -35,7 +36,7 @@ func Disassemble(script []byte) (asm []string) { asm = append(asm, fmt.Sprintf("0x%x", b)) - pc.Add(pc, big.NewInt(31)) + pc.Add(pc, big.NewInt(a-1)) } pc.Add(pc, ethutil.Big1) |