github.com/linapex/ethereum-go-chinese@v0.0.0-20190316121929-f8b7a73c3fa1/core/vm/memory_table.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 19:16:36</date> 10 //</624450083043151872> 11 12 13 package vm 14 15 import ( 16 "math/big" 17 18 "github.com/ethereum/go-ethereum/common/math" 19 ) 20 21 func memorySha3(stack *Stack) *big.Int { 22 return calcMemSize(stack.Back(0), stack.Back(1)) 23 } 24 25 func memoryCallDataCopy(stack *Stack) *big.Int { 26 return calcMemSize(stack.Back(0), stack.Back(2)) 27 } 28 29 func memoryReturnDataCopy(stack *Stack) *big.Int { 30 return calcMemSize(stack.Back(0), stack.Back(2)) 31 } 32 33 func memoryCodeCopy(stack *Stack) *big.Int { 34 return calcMemSize(stack.Back(0), stack.Back(2)) 35 } 36 37 func memoryExtCodeCopy(stack *Stack) *big.Int { 38 return calcMemSize(stack.Back(1), stack.Back(3)) 39 } 40 41 func memoryMLoad(stack *Stack) *big.Int { 42 return calcMemSize(stack.Back(0), big.NewInt(32)) 43 } 44 45 func memoryMStore8(stack *Stack) *big.Int { 46 return calcMemSize(stack.Back(0), big.NewInt(1)) 47 } 48 49 func memoryMStore(stack *Stack) *big.Int { 50 return calcMemSize(stack.Back(0), big.NewInt(32)) 51 } 52 53 func memoryCreate(stack *Stack) *big.Int { 54 return calcMemSize(stack.Back(1), stack.Back(2)) 55 } 56 57 func memoryCreate2(stack *Stack) *big.Int { 58 return calcMemSize(stack.Back(1), stack.Back(2)) 59 } 60 61 func memoryCall(stack *Stack) *big.Int { 62 x := calcMemSize(stack.Back(5), stack.Back(6)) 63 y := calcMemSize(stack.Back(3), stack.Back(4)) 64 65 return math.BigMax(x, y) 66 } 67 68 func memoryDelegateCall(stack *Stack) *big.Int { 69 x := calcMemSize(stack.Back(4), stack.Back(5)) 70 y := calcMemSize(stack.Back(2), stack.Back(3)) 71 72 return math.BigMax(x, y) 73 } 74 75 func memoryStaticCall(stack *Stack) *big.Int { 76 x := calcMemSize(stack.Back(4), stack.Back(5)) 77 y := calcMemSize(stack.Back(2), stack.Back(3)) 78 79 return math.BigMax(x, y) 80 } 81 82 func memoryReturn(stack *Stack) *big.Int { 83 return calcMemSize(stack.Back(0), stack.Back(1)) 84 } 85 86 func memoryRevert(stack *Stack) *big.Int { 87 return calcMemSize(stack.Back(0), stack.Back(1)) 88 } 89 90 func memoryLog(stack *Stack) *big.Int { 91 mSize, mStart := stack.Back(1), stack.Back(0) 92 return calcMemSize(mStart, mSize) 93 } 94