私は "Advanced Solidity"チュートリアルhereをフォローしています。オペコードJUMPはどのようにEVMスタックで動作しますか?
この例では、JUMPがスタックの状態に影響するのはなぜですか?プログラムカウンターにしか影響しないと思っていました。
:
おかげで(私はPCで、ジャンプの後に期待する、すなわち。11、スタックの長さは、JUMPはPUSH 0x0Bの後に来るではない2を3になります)。
私は "Advanced Solidity"チュートリアルhereをフォローしています。オペコードJUMPはどのようにEVMスタックで動作しますか?
この例では、JUMPがスタックの状態に影響するのはなぜですか?プログラムカウンターにしか影響しないと思っていました。
:
おかげで(私はPCで、ジャンプの後に期待する、すなわち。11、スタックの長さは、JUMPはPUSH 0x0Bの後に来るではない2を3になります)。
オリジナルのドキュメントを参照するだけです。 yellow paperに述べたように:
0x56 JUMP 1 0アルタープログラムカウンタ1は、スタックから取り出された項目の数である
、アイテムの0の数が返されます。したがって、JUMPはスタックから '0b'を取り除き、それを宛先(PC = 11 = 0x0b)として使用します。
JUMP
は、スタックの先頭にある値を宛先として使用します。 その値は宛先になります。
は、最初にPUSH
を実行し、プログラムカウンタをプッシュされた値に移動すると考えることができます。
マーティン/ @holimanのクレジットはethereum/tests
です。Gitter。ありがとう。
ありがとうございます。私は混乱したときに黄色い紙を参照するのを忘れています。 –