無条件分岐
形式 (Format) |
バイトサイズ (byte size) |
命令形式 (Assembly Format) |
説明 (Description) |
---|---|---|---|
0x38<int32> | 5 | br tatget | 「target」に分岐する。 |
0x2B<int8> | 2 | br.s target | 「target」に分岐する。上の短い形式。 |
..., -> ...,
「Br」命令は無条件に「target」へコントロールを移します。 「target」は符号付きオフセット(「br」命令で4バイト、「br.s」命令で1バイト)として命令の始まりから表されます。
目標命令に1つ以上のプリフィックスコードがあるなら、コントロールをこれらのプリフィックスの一つ目にだけしか移すことができません。
この命令ではtry、chatch、filter、finallyブロックからコントロールを移すことが出来ません。 (そのような分岐は、厳しく制限されて、代わりにleave命令を使用しなければなりません。詳細は次にあります。 Partition I 【まだ翻訳していないので、英語のページへ飛びます】)
この命令は、次の命令を「オフセット0」と考えます。そのことに注意してオフセットを指定してください。
原理: 評価スタックが空であるときには、「leave」命令と「br」命令の両方が使用可能です。この場合には「leave」命令は使用しない方が良いです。「leave」命令を使用した場合は性能が劣ったネイティブコードになる可能性があるからです。 したがって、両方が使用可能であるときに、CILジェネレータは「leave」命令に優先して「br」命令を使用するべきです。
無し
正しいCILは、コントロールのすべて移り変わりが上で指定された規則を満たさなければなりません。
さらに、安全なコードは目的地指示にあらゆる可能な経路のためのスタック、ローカル変数、および引数の型一貫性を必要とします。 詳細は次にあります。 CIL 命令セット(CIL Instruction Set)-オペランド型表。