aboutsummaryrefslogtreecommitdiffstats
path: root/ethchain
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-06-18 06:25:58 +0800
committerobscuren <geffobscura@gmail.com>2014-06-18 06:25:58 +0800
commit8a885c2606fbf675770cf40b31f9ceb5ef8acae9 (patch)
tree35765088a8ed14c9272837a4963dfdfd77ac858a /ethchain
parentca79360fd7621a96382c0304e74e0d1f39b739fc (diff)
downloaddexon-8a885c2606fbf675770cf40b31f9ceb5ef8acae9.tar.gz
dexon-8a885c2606fbf675770cf40b31f9ceb5ef8acae9.tar.zst
dexon-8a885c2606fbf675770cf40b31f9ceb5ef8acae9.zip
Fixed GT and LT
Diffstat (limited to 'ethchain')
-rw-r--r--ethchain/asm.go2
-rw-r--r--ethchain/types.go2
-rw-r--r--ethchain/vm.go35
3 files changed, 26 insertions, 13 deletions
diff --git a/ethchain/asm.go b/ethchain/asm.go
index c267f9b55..277326ff9 100644
--- a/ethchain/asm.go
+++ b/ethchain/asm.go
@@ -28,7 +28,7 @@ func Disassemble(script []byte) (asm []string) {
if len(data) == 0 {
data = []byte{0}
}
- asm = append(asm, fmt.Sprintf("%#x", data))
+ asm = append(asm, fmt.Sprintf("0x%x", data))
pc.Add(pc, big.NewInt(a-1))
}
diff --git a/ethchain/types.go b/ethchain/types.go
index d89fad147..ee70a8d28 100644
--- a/ethchain/types.go
+++ b/ethchain/types.go
@@ -226,7 +226,7 @@ var opCodeToString = map[OpCode]string{
func (o OpCode) String() string {
str := opCodeToString[o]
if len(str) == 0 {
- return fmt.Sprintf("Missing opcode %#x", int(o))
+ return fmt.Sprintf("Missing opcode 0x%x", int(o))
}
return str
diff --git a/ethchain/vm.go b/ethchain/vm.go
index 7a4e30a33..9dbc13ead 100644
--- a/ethchain/vm.go
+++ b/ethchain/vm.go
@@ -97,7 +97,7 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro
}
}()
- ethutil.Config.Log.Debugf("[VM] Running closure %x\n", closure.object.Address())
+ ethutil.Config.Log.Debugf("[VM] Running %x\n", closure.object.Address())
// Memory for the current closure
mem := &Memory{}
@@ -301,7 +301,7 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro
stack.Push(base)
case LT:
require(2)
- x, y := stack.Popn()
+ y, x := stack.Popn()
// x < y
if x.Cmp(y) < 0 {
stack.Push(ethutil.BigTrue)
@@ -310,7 +310,9 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro
}
case GT:
require(2)
- x, y := stack.Popn()
+ y, x := stack.Popn()
+ vm.Printf(" %v > %v", x, y)
+
// x > y
if x.Cmp(y) > 0 {
stack.Push(ethutil.BigTrue)
@@ -382,7 +384,10 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro
case ORIGIN:
stack.Push(ethutil.BigD(vm.vars.Origin))
case CALLER:
- stack.Push(ethutil.BigD(closure.caller.Address()))
+ caller := closure.caller.Address()
+ stack.Push(ethutil.BigD(caller))
+
+ vm.Printf(" => %x", caller)
case CALLVALUE:
stack.Push(vm.vars.Value)
case CALLDATALOAD:
@@ -397,10 +402,14 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro
data = []byte{0}
}
- fmt.Println("CALLDATALOAD", string(data), len(data), "==", len(closure.Args))
+ vm.Printf(" => 0x%x", data)
+
stack.Push(ethutil.BigD(data))
case CALLDATASIZE:
- stack.Push(big.NewInt(int64(len(closure.Args))))
+ l := int64(len(closure.Args))
+ stack.Push(big.NewInt(l))
+
+ vm.Printf(" => %d", l)
case CALLDATACOPY:
case CODESIZE:
case CODECOPY:
@@ -451,7 +460,7 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro
step += int(op) - int(PUSH1) + 1
- vm.Printf(" => %#x", data.Bytes())
+ vm.Printf(" => 0x%x", data.Bytes())
case POP:
require(1)
stack.Pop()
@@ -473,19 +482,21 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro
val, mStart := stack.Popn()
mem.Set(mStart.Int64(), 32, ethutil.BigToBytes(val, 256))
- vm.Printf(" => %#x", val)
+ vm.Printf(" => 0x%x", val)
case MSTORE8:
require(2)
val, mStart := stack.Popn()
base.And(val, new(big.Int).SetInt64(0xff))
mem.Set(mStart.Int64(), 32, ethutil.BigToBytes(base, 256))
- vm.Printf(" => %#x", val)
+ vm.Printf(" => 0x%x", val)
case SLOAD:
require(1)
loc := stack.Pop()
val := closure.GetMem(loc)
stack.Push(val.BigInt())
+
+ vm.Printf(" {} 0x%x", val)
case SSTORE:
require(2)
val, loc := stack.Popn()
@@ -495,7 +506,7 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro
// Add the change to manifest
vm.state.manifest.AddStorageChange(closure.Object(), loc.Bytes(), val)
- vm.Printf(" => %#x", val)
+ vm.Printf(" => 0x%x", val)
case JUMP:
require(1)
pc = stack.Pop()
@@ -509,9 +520,11 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro
if cond.Cmp(ethutil.BigTrue) >= 0 {
pc = pos
- vm.Printf(" ~> %v", pc).Endl()
+ vm.Printf(" (t) ~> %v", pc).Endl()
continue
+ } else {
+ vm.Printf(" (f)")
}
case PC:
stack.Push(pc)