From 854d6d4e5cb8783e18397fef655ad79065263cc2 Mon Sep 17 00:00:00 2001 From: obscuren Date: Thu, 21 Aug 2014 19:23:54 +0200 Subject: DUP/SWAP n & ADD/MULMOD --- ethvm/vm.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'ethvm/vm.go') diff --git a/ethvm/vm.go b/ethvm/vm.go index b27417586..29dc2515c 100644 --- a/ethvm/vm.go +++ b/ethvm/vm.go @@ -439,6 +439,36 @@ func (self *Vm) RunClosure(closure *Closure) (ret []byte, err error) { } else { stack.Push(ethutil.BigFalse) } + case ADDMOD: + require(3) + + x := stack.Pop() + y := stack.Pop() + z := stack.Pop() + + base.Add(x, y) + base.Mod(base, z) + + ensure256(base) + + self.Printf(" = %v", base) + + stack.Push(base) + case MULMOD: + require(3) + + x := stack.Pop() + y := stack.Pop() + z := stack.Pop() + + base.Mul(x, y) + base.Mod(base, z) + + ensure256(base) + + self.Printf(" = %v", base) + + stack.Push(base) // 0x20 range case SHA3: -- cgit v1.2.3