gpt4 book ai didi

.net - CIL - ldc.i4 33 和 ldc.i4.33 之间有什么区别?

转载 作者:行者123 更新时间:2023-12-02 14:03:42 34 4
gpt4 key购买 nike

我正在尝试找出一些 CIL 代码。但这似乎这两个陈述做了同样的事情(根据我读过的所有内容)。

ldc.i4 33

ldc.i4.33

两者都被认为“将 int32 加载到值 33 的堆栈上”。

这是正确的吗?为什么?我本以为 ldc.i4.33 会是“将局部变量索引 33 中的整数加载到堆栈上”。

我哪里出错了?

最佳答案

操作码 ldc.i4.33 不存在。

有一些特殊的(称为宏)操作码,来自:

ldc.i4.m1  // has the same effect as: ldc.i4 -1

ldc.i4.8   // has the same effect as: ldc.i4  8

但对于常见情况,它们只是 ldc.i4 操作码的缩写形式,用于优化 CIL 大小。

类似地,ldloc.0 是一种缩写形式(即具有更紧凑的 CIL 编码,但与 ldloc 0 完全相同)等。

关于.net - CIL - ldc.i4 33 和 ldc.i4.33 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5840252/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com