C# 加载常量的MSIL指令

C# 加载常量的MSIL指令,c#,.net,.net-assembly,cil,il,C#,.net,.net Assembly,Cil,Il,我只是读和看,只有一个MSIL指令加载常数。这是ldc.r8,这是loadsdouble常量 现在我对此很好奇。我在谷歌上搜索了一下,但几乎没找到什么。你能告诉我.NET中有什么样的恒载指令吗?我在哪里读到有关它们的信息?这里是指令集的一个来源:;您将在那里看到16个ldc说明 如果您想要更全面的信息源,请尝试规范:这里有一个指令集的源:;您将在那里看到16个ldc说明 如果您想要更全面的信息源,请尝试使用spec:将类型为float64的值作为类型F(float)加载到计算堆栈中 链接:将类型

我只是读和看,只有一个MSIL指令加载常数。这是ldc.r8,这是loads
double
常量


现在我对此很好奇。我在谷歌上搜索了一下,但几乎没找到什么。你能告诉我.NET中有什么样的恒载指令吗?我在哪里读到有关它们的信息?

这里是指令集的一个来源:;您将在那里看到16个
ldc
说明


如果您想要更全面的信息源,请尝试规范:

这里有一个指令集的源:;您将在那里看到16个
ldc
说明


如果您想要更全面的信息源,请尝试使用spec:

将类型为
float64
的值作为类型F(float)加载到计算堆栈中


链接:

将类型为
float64
的值作为类型F(float)加载到计算堆栈上


链接:

是否
ldstr
也是一个加载常数指令?@AlanDert根据C#常数定义,是的。我不记得CLI规范是否将“文字字符串”视为“常量”。奇怪的是,没有指令
ldc.i4.9
。你是什么意思?我没有找到
ldc.i4.9
。为什么它不存在?@AlanDert它不存在,因为你不能为每个整数值单独设置一个特殊的短格式加载指令,所以你必须选择一小部分整数值,为它们创建一个特殊的短格式加载指令。IL设计者选择的小数字是9,覆盖值为0到8。不包括9的决定是一个“在有特殊情况说明的值和没有特殊情况说明的值之间画线…”的例子。
ldstr
也是一个加载常量指令吗?@AlanDert根据C#常量定义,是的。我不记得CLI规范是否将“文字字符串”视为“常量”。奇怪的是,没有指令
ldc.i4.9
。你是什么意思?我没有找到
ldc.i4.9
。为什么它不存在?@AlanDert它不存在,因为你不能为每个整数值单独设置一个特殊的短格式加载指令,所以你必须选择一小部分整数值,为它们创建一个特殊的短格式加载指令。IL设计者选择的小数字是9,覆盖值为0到8。不包含9的决定是一个“划清界线…”(在有特殊情况说明的值和没有特殊情况说明的值之间)“…某处”的例子。这并不能回答问题(“你能告诉我,.NET中有什么样的恒载说明?我在哪里读到它们?”)我补充了关于ldc.r8的内容,但这并没有回答这个问题(“你能告诉我,.NET中有什么样的恒载指令?我从哪里读到的?”)我补充了关于ldc.r8的内容