CIL中有一些加载说明,例如ldc.i4.0
,ldc.i4.1
,ldc.i4.2
,ldc.i4.3
......
我想知道,是否可以使用ldc.i4 1
代替ldc.i4.1
或ldc.i4 5
代替ldc.i4.5
?
答案 0 :(得分:7)
是的,使用ldc.i4 1
代替ldc.i4.1
是完全合法的。在最常见的情况下,单字节操作码的是为了提高效率和简洁性。特别是,所有ldarg.0
(1个字节)将快速加起来显着增加程序集的大小,如果它们是ldarg 0
(3个字节),那么{ {1}}之类的内容{1}} ldc.i4.1
是5个字节而不是1个。
您没有义务使用它们。我实际上期望(未经测试)JIT以发现更详细的用法并且无论如何都要对它进行相同处理,尽管它不会 这样做。
就个人而言,当我正在“发射”或类似时,我只使用一个实用程序方法,为任何给定的值/ local / argument /等发出最合适的代码。 / p>
答案 1 :(得分:-2)