1

我正在关注这里的“高级 Solidity”教程。

我遇到了一个我无法理解的例子。 示例图像

在这个例子中,为什么 JUMP 会影响堆栈的状态?我预计它只会影响程序计数器。

(即我希望在 JUMP 之后,在 PC:11 处,堆栈的长度将是 3,而不是 2。JUMP 出现在 PUSH 0x0B 之后。)

谢谢。

4

2 回答 2

1

只是参考原始文档。如黄皮书所述:

0x56 JUMP 1 0 改变程序计数器

其中 1 是从堆栈中取出的项目数,0 是返回的项目数。因此,在您的情况下,JUMP 从堆栈中删除“0b”并将其用作目标(PC = 11 = 0x0b)。

于 2017-06-28T22:04:52.730 回答
0

弄清楚了。

JUMP将堆栈顶部的值用作目标。该值“成为”目的地。

AJUMP可以被认为是执行PUSH第一个,并将程序计数器移动到推送的值。

感谢 Gitter上的 Martin / @holiman ethereum/tests。谢谢。

于 2017-06-17T09:01:53.243 回答