69 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			69 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								package vm
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import (
							 | 
						||
| 
								 | 
							
									"math/big"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									"github.com/ethereum/go-ethereum/common"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								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 common.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 common.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 common.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)
							 | 
						||
| 
								 | 
							
								}
							 |