事实:
CIL 指令
rethrow
操作码的正确编码是两字节序列FE 1A
。OpCodes.Rethrow.Value
(具有 typeshort
)0xFE1A
在我的 little-endian 机器上具有价值。BitConverter
在转换到/从字节序列时尊重机器的字节顺序。在我的 little-endian 机器上,
BitConverter.GetBytes(OpCodes.Rethrow.Value)
结果为 byte sequence1A FE
。
这意味着,OpCode.Value
在 little-endian 机器上使用序列化 aBitConverter
不会为操作码生成正确的编码;字节顺序颠倒了。
问题:
是
OpCode.Value
记录的字节顺序(如果是,在哪里?),还是“实现细节”?上面的步骤 4 在大端机器上是否也会导致错误的字节顺序?也就是说,会
OpCodes.Rethrow.Value
在0x1AFE
大端机器上吗?