以太坊虚拟机栈操作指令
上一篇文章对EVM和它的指令集进行了简单介绍,本文将介绍POP指令、PUSHx系列指令、DUPx系列指令、SWAPx系列指令。这些指令只对EVM栈进行单纯的操作,它们的操作码分布如下图所示:
POP指令
POP指令(操作码0x50)从栈顶弹出一个元素。下面是POP指令的操作示意图(白色表示元素即将发生变动):
PUSHx指令
PUSH系列指令把紧跟在指令后面的N(1 ~ 32)字节元素推入栈顶。PUSH系列指令一共有32条,从PUSH1(操作码0x60)一直到PUSH32(操作码0x7A)。EVM是大端机器,以PUSH2指令为例,下面是该指令的操作示意图(不完整的灰色纸带表示字节码):