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