2017-06-17 9 views
0

私は "Advanced Solidity"チュートリアルhereをフォローしています。オペコードJUMPはどのようにEVMスタックで動作しますか?

私は例を知りませんでした。 example image

この例では、JUMPがスタックの状態に影響するのはなぜですか?プログラムカウンターにしか影響しないと思っていました。

おかげで(私はPCで、ジャンプの後に期待する、すなわち。11、スタックの長さは、JUMPはPUSH 0x0Bの後に来るではない2を3になります)。

答えて

1

オリジナルのドキュメントを参照するだけです。 yellow paperに述べたように:

0x56 JUMP 1 0アルタープログラムカウンタ1は、スタックから取り出された項目の数である

、アイテムの0の数が返されます。したがって、JUMPはスタックから '0b'を取り除き、それを宛先(PC = 11 = 0x0b)として使用します。

+0

ありがとうございます。私は混乱したときに黄色い紙を参照するのを忘れています。 –

0

JUMPは、スタックの先頭にある値を宛先として使用します。 その値は宛先になります。

は、最初にPUSHを実行し、プログラムカウンタをプッシュされた値に移動すると考えることができます。

マーティン/ @holimanのクレジットはethereum/testsです。Gitter。ありがとう。

関連する問題