【发布时间】:2010-05-20 18:11:09
【问题描述】:
我一直在玩 IL,我注意到像 Prefix1 这样的操作码,文档基本上告诉我不要担心。自然,这让我很好奇这些不同的前缀操作码实际上做了什么。一个快速的谷歌搜索没有出现任何东西,所以我想我会在这里问专家。有人知道这些是什么意思吗?
【问题讨论】:
我一直在玩 IL,我注意到像 Prefix1 这样的操作码,文档基本上告诉我不要担心。自然,这让我很好奇这些不同的前缀操作码实际上做了什么。一个快速的谷歌搜索没有出现任何东西,所以我想我会在这里问专家。有人知道这些是什么意思吗?
【问题讨论】:
虽然大多数操作码是单个字节,但当前使用的一些操作码包含 2 个字节。例如,Opcodes.LdLoc 编码为 0xfe + 0x0c。您可能会猜到 Opcodes.Prefix1 的值,它是 0xfe。 Prefix2-7 是为了将来的可扩展性。它们被标记为“不使用”,因为多字节操作码的值中已经包含前缀(字段 m_s1 和 m_s2)。
如果您对背景信息感兴趣,可以查看Ecma-335 standard document。
【讨论】:
http://msdn.microsoft.com/en-us/library/812xyxy2(v=VS.95).aspx
Prefix1 是保留指令,不应该使用。也许它是为将来的某个版本保留的。
【讨论】: