cil - ldloc 变量与 ldloc.n

标签 cil intermediate-language

有人知道使用 ldloc var CIL 指令和 ldloc.n 是否存在哪怕很小的差异吗?

在方法范围内考虑这个本地变量表:

.locals init ([0] int32 a,
              [1] int32 b)

这些说明是:

ldloc.0
ldloc.1

更好、最差或等于:

ldloc a
ldloc b

最佳答案

常见操作码有许多缩短形式,其目标很简单 - 缩短方法的长度。 ldloc.<em>n</em>指令占用一个字节,ldloc.s <em>n</em>两个字节,和 ldloc <em>n</em>三个字节。这对于内联很有用,因为长度超过 16 字节的方法不适合内联。

关于cil - ldloc 变量与 ldloc.n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22785888/

相关文章:

c++ - 部分 C++ 程序的静态分析

svg - 有二进制的SVG吗?

c# - for循环迭代变量的复用

f# - 在 F# 标准库实现中看到的 (# ... #) 语法是什么?

C# 从 IL 中的静态方法调用并返回一个对象

c# - if 在 IL 中是什么样子的?

c# - 哪些工具执行 IL 的编译后修改?

.net - 这个 CIL 代码是做什么的?为什么需要第3步?

c# - 为什么编译器在没有闭包的情况下为委托(delegate)添加额外的参数?

f# - 如果 F# 中的私有(private)实体编译为内部,为什么 InternalsVisibleTo 不起作用?