通过以太坊EVM谜题深入学习EVM。
通过以太坊 EVM 谜题深入学习 EVM。
00 34 CALLVALUE
01 80 DUP1
02 02 MUL
03 610100 PUSH2 0100
06 14 EQ
07 600C PUSH1 0C
09 57 JUMPI
0A FD REVERT
0B FD REVERT
0C 5B JUMPDEST
0D 00 STOP
0E FD REVERT
0F FD REVERT
以上是 EVM 谜题 5 合约的操作码,它前面的谜题有些不同类似, 没有了 JUMP 操作码,而是使用了 JUMPI。
JUMPI指令可以改变程序计数器,从而打破了执行的线性路径, 调转到部署代码中的另一点。它被用来实现循环和条件判断等功能。
当 "JUMPI "被执行时,它从堆栈中弹出两个值。第一个值是要跳转到的新的程序计数器(像往常一样,它必须是一个有效的JUMPDEST
指令)。第二个值是一个布尔标志(0或1),用来判断它是否必须跳转。如果值为1,它将跳转;否则它将继续下一条指令。
让我们回顾一下JUMPI
之前的每个操作码:
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!