为什么.Net CIL中有未使用的操作码值?

时间:2019-05-17 15:47:53

标签: .net cil

CIL有一些双字节指令,考虑到有很多未使用的可用单字节指令,我觉得这很奇怪。一些特定的示例是:

  • 0x240x23 ldc.r80x25 dup之间未使用
  • 0xA60xB2之间未使用
  • 0xA5 unbox.any0xB3 conv.ovf.i1

我只计算了27个双字节指令,而且空位比这个多。

我可以理解这是否是对齐问题,但是许多单字节指令后跟32位整数(总共5个字节),几个双字节指令后跟32位整数(总共6个字节),它们分别是一条双字节指令,后跟一个8位整数(共3个字节)。据我所知,它们与任何一致的边界都没有对齐。

作为参考,我正在使用System.Reflection.Emit.OpCodes静态字段https://docs.microsoft.com/en-us/dotnet/api/system.reflection.emit.opcodes

上的文档

请原谅我这是不是要问的错误堆栈,我为此而感到困惑。让我知道是否应该张贴在那里。

0 个答案:

没有答案