我正在研究C#(IL)的中间语言,并且遇到了以下代码: -
//Add.il
//Add Two Numbers
.assembly extern mscorlib {}
.assembly Add
{
.ver 1:0:1:0
}
.module add.exe
.method static void main() cil managed
{
.maxstack 2
.entrypoint
ldstr "The sum of 50 and 30 is = "
call void [mscorlib]System.Console::Write (string)
ldc.i4.s 50
ldc.i4 30
add
call void [mscorlib]System.Console::Write (int32)
ret
}
Run Code Online (Sandbox Code Playgroud)
我是理解IL的初学者,但我知道Main在上面的例子中使用的这些非常基本的指令的含义.
我的问题是,ldc.i4.s用于加载50的指令和ldc.i4用于将30加载到评估堆栈的指令之间是否存在任何差异.
编译器如何决定使用哪个指令(在这两个指令中)以及何时使用?
| 归档时间: |
|
| 查看次数: |
4722 次 |
| 最近记录: |