我正在关注“高级Solidity”教程here。
在这个例子中,为什么JUMP会影响堆栈的状态?我预计它只会影响程序计数器。
(即我希望在JUMP之后,在PC:11,堆栈的长度为3,而不是2. JUMP在PUSH 0x0B之后出现。)
感谢。
答案 0 :(得分:1)
仅提及原始文档。如yellow paper中所述:
0x56 JUMP 1 0更改程序计数器
其中1是从堆栈中取出的项目数,0是返回的项目数。所以在你的情况下,JUMP会删除' 0b'从堆栈中使用它作为目的地(PC = 11 = 0x0b)。
答案 1 :(得分:0)
想出来。
JUMP
将堆栈顶部的值用作目标。
该值“成为”目的地。
可以将JUMP
视为首先执行PUSH
,并将程序计数器移动到推送值。
归功于ethereum/tests
Gitter的Martin / @holiman。感谢。