我正在关注这里的“高级 Solidity”教程。
在这个例子中,为什么 JUMP 会影响堆栈的状态?我预计它只会影响程序计数器。
(即我希望在 JUMP 之后,在 PC:11 处,堆栈的长度将是 3,而不是 2。JUMP 出现在 PUSH 0x0B 之后。)
谢谢。
只是参考原始文档。如黄皮书所述:
0x56 JUMP 1 0 改变程序计数器
其中 1 是从堆栈中取出的项目数,0 是返回的项目数。因此,在您的情况下,JUMP 从堆栈中删除“0b”并将其用作目标(PC = 11 = 0x0b)。
弄清楚了。
JUMP
将堆栈顶部的值用作目标。该值“成为”目的地。
AJUMP
可以被认为是执行PUSH
第一个,并将程序计数器移动到推送的值。
感谢 Gitter上的 Martin / @holiman ethereum/tests
。谢谢。