69 lines
1.6 KiB
Go
69 lines
1.6 KiB
Go
package vm
|
|
|
|
import (
|
|
"math/big"
|
|
|
|
"github.com/ethereum/go-ethereum/common/math"
|
|
)
|
|
|
|
func memorySha3(stack *Stack) *big.Int {
|
|
return calcMemSize(stack.Back(0), stack.Back(1))
|
|
}
|
|
|
|
func memoryCalldataCopy(stack *Stack) *big.Int {
|
|
return calcMemSize(stack.Back(0), stack.Back(2))
|
|
}
|
|
|
|
func memoryCodeCopy(stack *Stack) *big.Int {
|
|
return calcMemSize(stack.Back(0), stack.Back(2))
|
|
}
|
|
|
|
func memoryExtCodeCopy(stack *Stack) *big.Int {
|
|
return calcMemSize(stack.Back(1), stack.Back(3))
|
|
}
|
|
|
|
func memoryMLoad(stack *Stack) *big.Int {
|
|
return calcMemSize(stack.Back(0), big.NewInt(32))
|
|
}
|
|
|
|
func memoryMStore8(stack *Stack) *big.Int {
|
|
return calcMemSize(stack.Back(0), big.NewInt(1))
|
|
}
|
|
|
|
func memoryMStore(stack *Stack) *big.Int {
|
|
return calcMemSize(stack.Back(0), big.NewInt(32))
|
|
}
|
|
|
|
func memoryCreate(stack *Stack) *big.Int {
|
|
return calcMemSize(stack.Back(1), stack.Back(2))
|
|
}
|
|
|
|
func memoryCall(stack *Stack) *big.Int {
|
|
x := calcMemSize(stack.Back(5), stack.Back(6))
|
|
y := calcMemSize(stack.Back(3), stack.Back(4))
|
|
|
|
return math.BigMax(x, y)
|
|
}
|
|
|
|
func memoryCallCode(stack *Stack) *big.Int {
|
|
x := calcMemSize(stack.Back(5), stack.Back(6))
|
|
y := calcMemSize(stack.Back(3), stack.Back(4))
|
|
|
|
return math.BigMax(x, y)
|
|
}
|
|
func memoryDelegateCall(stack *Stack) *big.Int {
|
|
x := calcMemSize(stack.Back(4), stack.Back(5))
|
|
y := calcMemSize(stack.Back(2), stack.Back(3))
|
|
|
|
return math.BigMax(x, y)
|
|
}
|
|
|
|
func memoryReturn(stack *Stack) *big.Int {
|
|
return calcMemSize(stack.Back(0), stack.Back(1))
|
|
}
|
|
|
|
func memoryLog(stack *Stack) *big.Int {
|
|
mSize, mStart := stack.Back(1), stack.Back(0)
|
|
return calcMemSize(mStart, mSize)
|
|
}
|