仕様は、0x40のであると述べています。私のブロックが空でないとしても、コンパイラはオペコード0x02の後に0x40を与えます。0x40バイトのWebアセンブリの意味?</p> <blockquote> <p>空block_type</p> </blockquote> <p>を表現するための疑似タイプは今、彼らはそれによって何を意味するか全くわからないイム:
0x40は "void"に似ていますか?
仕様は、0x40のであると述べています。私のブロックが空でないとしても、コンパイラはオペコード0x02の後に0x40を与えます。0x40バイトのWebアセンブリの意味?</p> <blockquote> <p>空block_type</p> </blockquote> <p>を表現するための疑似タイプは今、彼らはそれによって何を意味するか全くわからないイム:
0x40は "void"に似ていますか?
はい、それはvoid
のようです。ブロックは値(i32
、i64
、f32
、f64
)を返すか、まったく値を返さないという考えがあります。タイプはlanguage typesの下にリストされ、block typeは保持できる有効なタイプを制限します。これは、命令が実行スタックにプッシュする値を命令が消費できることを意味します。そのため、ブロックはその意味での関数に似ています。ブロックはではなく、void
という値をスタックにプッシュすると便利です。または、コンパイラはブロックのプロパティを使用するのに十分スマートではなく、代わりに場合によってはローカルを使用します。
最終的には、関数とブロックが複数の値をスタックにプッシュできるようにするmulti-valueがサポートされます。
これは問題を解決します。大変お答えいただき、ありがとうございました。多価値サポートはかなり良いですし、私は本当に進歩に感銘を受けました。 – Asperger