导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

OpCodes.Ldind_I1 字段

2013/12/13

int8 类型的值作为 int32 间接加载到计算堆栈上。

Namespace:  System.Reflection.Emit
程序集:  mscorlib(位于 mscorlib.dll 中)

public static readonly OpCode Ldind_I1

下表列出了指令的十六进制和 Microsoft 中间语言 (MSIL) 汇编格式,以及简短的参考摘要:

Format

汇编格式

说明

46

ldind.i1

将位于地址 addr 处的 int8 值作为 int32 加载到堆栈上。

堆栈转换行为依次为:

  1. 将地址推送到堆栈上。

  2. 从堆栈中弹出地址;获取位于此地址的值。

  3. 将获取的值推送到堆栈上。

ldind.i1 指令将指定地址中的 int8 值(类型为 native int& 或 *)作为 int32 类型间接加载到堆栈上。

所有 ldind 指令都是指定相应内置值类的 Ldobj 指令的快捷方式。

请注意,小于 4 个字节的整数值在加载到计算堆栈上时会被扩展为 int32(不是 native int)。 浮点值在加载到计算堆栈上时会被转换为 F 类型。

格式正确的 MSIL 可确保以与该指针的类型一致的方式来使用 ldind 指令。

最初推送到堆栈上的地址必须与计算机上对象的自然大小对齐;否则,将发生 NullReferenceException(有关预防措施,请参见 Unaligned 前缀指令)。 所有返回地址的 MSIL 指令(例如,LdlocaLdarga)的结果肯定是对齐的。 对于大于 1 个字节的数据类型,字节排序取决于目标 CPU。 取决于字节排序的代码可能不会在所有平台上都运行。

如果检测到无效地址,则可能引发 NullReferenceException

下面的 Emit 方法重载可以使用 ldind.i1 操作码:

  • ILGenerator.Emit(OpCode)

Windows Phone OS

受以下版本支持: 8.0, 7.1

Windows Phone

显示:
© 2015 Microsoft