3

CILstelem命令 ( ECMA 335 [pdf] の III.4.26) は次のように指定されています。

フォーマット アセンブリ フォーマット 説明
A4 <T>       stelem typeTok indexの      配列要素をスタック上の
                                値に置き換える

スタック遷移: 
…、配列、インデックス、値、-> …

typeTok引数の目的がわかりません。

オリジナルスペック

以下は、仕様におけるtypeTokのすべての言及です。

  • 説明では:

    値の型は、命令のtypeTok と互換性のある配列要素でなければなりません。

  • 「正しさ」セクションで:

    typeTok は、有効なtypedeftyperef、またはtypespecメタデータ トークンでなければなりません。

  • 「検証可能性」セクション:

    • 追跡される配列の型はT[]ですT

    • 追跡される値の型はarray-element-compatible-with typeTokです。

    • typeTokarray-element-compatible-withです T

したがって、typeTokは何にも使用されません。提供する必要があるだけです。つまり、私が見る唯一の要件は、条件を満たすtypeTok存在する必要があるということです。

変更された仕様

ただし、そのようなtypeTokの単なる存在を要求することは、上記の仕様セクションを次のように変更することと同等です。

  • 説明では:

    値の型は、配列の要素型と互換性のある配列要素でなければなりません

  • 「正確性」セクションで、上記の部分を削除します。

  • 「検証可能性」セクション:

    • 追跡される配列の型はT[]ですT

    • 追跡される値の型はarray-element-compatible-withです T


1 valuearrayの要素型を持つ aec-withの場合、 aec-with関係の再帰性により、valueの型または配列の要素型のいずれかを、「元の仕様」の要件を満たすtypeTokとして選択できます。 "。逆に、指定された要件を持つ typeTok が存在する場合 aec -with関係の推移性により、「変更された仕様」の要件がすぐに生成されます。


それで、私は何が欠けていますか?typeTok引数が存在するのはなぜですか(したがって、なぜstelem.<type>以外の命令stelem.refが存在するのでしょうか)。

4

1 に答える 1