事実:
rethrow
CIL 命令のオペコードの正しいエンコードは、2 バイト シーケンスFE 1A
です。OpCodes.Rethrow.Value
( type を持つ) は、リトルエンディアン マシンでshort
価値があります。0xFE1A
BitConverter
バイト シーケンスとの間の変換時に、マシンのエンディアンを尊重します。私のリトル エンディアン マシンでは、
BitConverter.GetBytes(OpCodes.Rethrow.Value)
結果はバイト シーケンス1A FE
.
つまり、OpCode.Value
を使用してリトルエンディアン マシンで をシリアルBitConverter
化しても、オペコードの正しいエンコーディングは生成されません。バイト順が逆になります。
質問:
のバイト順は
OpCode.Value
文書化されていますか (もしそうなら、どこで?)、それとも「実装の詳細」ですか?ビッグ エンディアン マシンで上記の手順 4 を実行しても、バイト順が正しくありませんか? つまり、ビッグエンディアンのマシンでしょうか
OpCodes.Rethrow.Value
?0x1AFE