这里定义了许多操作,以几个例子来说明。
func opAdd(pc *uint64, evm *EVM, contract *Contract, memory *Memory, stack *Stack) ([]byte, error) {
x, y := stack.pop(), stack.pop()
stack.push(math.U256(x.Add(x, y)))
evm.interpreter.intPool.put(y)
return nil, nil
}
传入一个无符号64位pc,虚拟机evm,合约constract,模拟内存memory,模拟堆栈stack,返回字节数组和error。
由于是一个加法操作,x,y赋值从栈中弹出,相加后压入栈中。
把y压入
evm.interpreter.intPool
返回nil,nil.